Etiqueta: visualeditor |
|||
| (10 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
| Linha 1: | Linha 1: | ||
= Especificação técnica = | = Especificação técnica = | ||
API é um acrônimo de Application Programming Interface, Interface de Programação de Aplicação, traduzindo ao português. Ela é composta de informações que podem ser utilizadas para extrair dados de um certo local e transportá-los para outro local, definindo comportamentos específicos de determinados objetos em uma interface para outras aplicações, para isso é necessário integrar com um software entrando com chave de acesso para ser permitido o fluxo de dados. | API é um acrônimo de Application Programming Interface, Interface de Programação de Aplicação, traduzindo ao português. Ela é composta de informações que podem ser utilizadas para extrair dados de um certo local e transportá-los para outro local, definindo comportamentos específicos de determinados objetos em uma interface para outras aplicações, para isso é necessário integrar com um software entrando com chave de acesso para ser permitido o fluxo de dados. | ||
| Linha 16: | Linha 14: | ||
android:name="com.google.android.geo.API_KEY" | android:name="com.google.android.geo.API_KEY" | ||
android:value="BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75"/> | android:value="BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75"/> | ||
</syntaxhighlight><syntaxhighlight> | </syntaxhighlight> | ||
Exemplo de uma configuração de um projeto:<syntaxhighlight> | |||
# Proguard config for the demo project. | # Proguard config for the demo project. | ||
# | # | ||
| Linha 50: | Linha 49: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Exemplo do main da API do Google Maps:<syntaxhighlight lang="xml" line="1"> | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<!-- | |||
Copyright (C) 2013 The Android Open Source Project | |||
Licensed under the Apache License, Version 2.0 (the "License"); | |||
you may not use this file except in compliance with the License. | |||
You may obtain a copy of the License at | |||
http://www.apache.org/licenses/LICENSE-2.0 | |||
Unless required by applicable law or agreed to in writing, software | |||
distributed under the License is distributed on an "AS IS" BASIS, | |||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
See the License for the specific language governing permissions and | |||
limitations under the License. | |||
--> | |||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |||
package="com.example.mapdemo" > | |||
<!-- | |||
The ACCESS_COARSE/FINE_LOCATION permissions are not required to use | |||
Google Maps Android API v2, but you must specify either coarse or fine | |||
location permissions for the 'MyLocation' functionality. | |||
--> | |||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> | |||
<!-- EXTERNAL_STORAGE permissions are optional for Android 6.0 onwards. --> | |||
<uses-permission | |||
android:name="android.permission.WRITE_EXTERNAL_STORAGE" | |||
android:maxSdkVersion="22" /> | |||
<uses-permission | |||
android:name="android.permission.READ_EXTERNAL_STORAGE" | |||
android:maxSdkVersion="22" /> | |||
<application | |||
android:allowBackup="true" | |||
android:icon="@mipmap/ic_launcher" | |||
android:label="@string/demo_title" | |||
android:supportsRtl="true" | |||
android:theme="@style/AppTheme" > | |||
<!-- | |||
The API key for Google Maps-based APIs is defined as a string resource. | |||
(See the file "res/values/google_maps_api.xml"). | |||
Note that the API key is linked to the encryption key used to sign the APK. | |||
You need a different API key for each encryption key, including the release key that is used to | |||
sign the APK for publishing. | |||
You can define the keys for the debug and release targets in src/debug/ and src/release/. | |||
--> | |||
<meta-data | |||
android:name="com.google.android.geo.API_KEY" | |||
android:value="@string/google_maps_key" /> | |||
<activity android:name=".MainActivity"> | |||
<intent-filter> | |||
<action android:name="android.intent.action.MAIN"/> | |||
<category android:name="android.intent.category.LAUNCHER"/> | |||
</intent-filter> | |||
</activity> | |||
<activity | |||
android:name=".BasicMapDemoActivity" | |||
android:label="@string/basic_map_demo_label"/> | |||
<activity | |||
android:name=".CameraDemoActivity" | |||
android:label="@string/camera_demo_label"/> | |||
<activity | |||
android:name=".CameraClampingDemoActivity" | |||
android:label="@string/camera_clamping_demo_label"/> | |||
<activity | |||
android:name=".CircleDemoActivity" | |||
android:label="@string/circle_demo_label"/> | |||
<activity | |||
android:name=".EventsDemoActivity" | |||
android:label="@string/events_demo_label"/> | |||
<activity | |||
android:name=".GroundOverlayDemoActivity" | |||
android:label="@string/ground_overlay_demo_label"/> | |||
<activity | |||
android:name=".IndoorDemoActivity" | |||
android:label="@string/indoor_demo_label"/> | |||
<activity | |||
android:name=".LayersDemoActivity" | |||
android:label="@string/layers_demo_label"/> | |||
<activity | |||
android:name=".LiteDemoActivity" | |||
android:label="@string/lite_demo_label"/> | |||
<activity | |||
android:name=".LiteListDemoActivity" | |||
android:label="@string/lite_list_demo_label"/> | |||
<activity | |||
android:name=".LocationSourceDemoActivity" | |||
android:label="@string/location_source_demo_label"/> | |||
<activity | |||
android:name=".MapInPagerDemoActivity" | |||
android:label="@string/map_in_pager_demo_label"/> | |||
<activity | |||
android:name=".MarkerDemoActivity" | |||
android:label="@string/marker_demo_label"/> | |||
<activity | |||
android:name=".MarkerCloseInfoWindowOnRetapDemoActivity" | |||
android:label="@string/marker_close_info_window_on_retap_demo_label"/> | |||
<activity | |||
android:name=".MultiMapDemoActivity" | |||
android:label="@string/multi_map_demo_label"/> | |||
<activity | |||
android:name=".MyLocationDemoActivity" | |||
android:label="@string/my_location_demo_label"/> | |||
<activity | |||
android:name=".OptionsDemoActivity" | |||
android:label="@string/options_demo_label"/> | |||
<activity | |||
android:name=".PolygonDemoActivity" | |||
android:label="@string/polygon_demo_label"/> | |||
<activity | |||
android:name=".PolylineDemoActivity" | |||
android:label="@string/polyline_demo_label"/> | |||
<activity | |||
android:name=".ProgrammaticDemoActivity" | |||
android:label="@string/programmatic_demo_label"/> | |||
<activity | |||
android:name=".RawMapViewDemoActivity" | |||
android:label="@string/raw_map_view_demo_label"/> | |||
<activity | |||
android:name=".RetainMapDemoActivity" | |||
android:label="@string/retain_map_demo_label"/> | |||
<activity | |||
android:name=".SaveStateDemoActivity" | |||
android:label="@string/save_state_demo_label"/> | |||
<activity | |||
android:name=".SnapshotDemoActivity" | |||
android:label="@string/snapshot_demo_label"/> | |||
<activity | |||
android:name=".SplitStreetViewPanoramaAndMapDemoActivity" | |||
android:label="@string/split_street_view_panorama_and_map_demo_label"/> | |||
<activity | |||
android:name=".StreetViewPanoramaBasicDemoActivity" | |||
android:label="@string/street_view_panorama_basic_demo_label"/> | |||
<activity | |||
android:name=".StreetViewPanoramaEventsDemoActivity" | |||
android:label="@string/street_view_panorama_events_demo_label"/> | |||
<activity | |||
android:name=".StreetViewPanoramaNavigationDemoActivity" | |||
android:label="@string/street_view_panorama_navigation_demo_label"/> | |||
<activity | |||
android:name=".StreetViewPanoramaOptionsDemoActivity" | |||
android:label="@string/street_view_panorama_options_demo_label"/> | |||
<activity | |||
android:name=".StreetViewPanoramaViewDemoActivity" | |||
android:label="@string/street_view_panorama_view_demo_label"/> | |||
<activity | |||
android:name=".StyledMapDemoActivity" | |||
android:label="@string/styled_map_demo_label"/> | |||
<activity | |||
android:name=".TagsDemoActivity" | |||
android:label="@string/tags_demo_label"/> | |||
<activity | |||
android:name=".TileCoordinateDemoActivity" | |||
android:label="@string/tile_coordinate_demo_label"/> | |||
<activity | |||
android:name=".TileOverlayDemoActivity" | |||
android:label="@string/tile_overlay_demo_label"/> | |||
<activity | |||
android:name=".UiSettingsDemoActivity" | |||
android:label="@string/ui_settings_demo_label"/> | |||
<activity | |||
android:name=".VisibleRegionDemoActivity" | |||
android:label="@string/visible_region_demo_label"/> | |||
</application> | |||
</manifest> | |||
</syntaxhighlight> | |||
https://github.com/Sensedia | |||
https://github.com/Sensedia/apix2017-microservice-products | |||
= Funcionamento = | = Funcionamento = | ||
O funcionamento da Tecnologia é dado a partir da chave, chamada API KEY, dado pelo fornecedor da API, como está no primeiro código de exemplo acima. A partir disso, a API pode ter ou não interface, dependendo de qual é utilizada. | |||
Para ela ser criada, existe o estilo REST de construção de web services, bem como as melhores práticas comumente adotadas na criação de uma RESTful API. Essa forma é útil para desenvolvedores que precisem criar uma API pública ou privada para expor dados e funcionalidades de um sistema web para outras aplicações, sejam elas web, mobile ou desktop. | |||
O REST é mais simples que o SOAP. Foi projetado para ser usado em clientes “magros”, o que o torna ideal para utilização em dispositivos com capacidades limitadas. As respostas do REST são cacheáveis, diferente do SOAP. Isso dá um grande aumento de performance em clientes simples. | |||
Enquanto o SOAP utiliza apenas XML, o REST pode se comunicar através de diversos formatos, sendo JSON o mais usado. Por ser um formato menos verboso e normalmente menor, a transferência de dados com o uso de JSON causa uma carga menor na rede, além de ser mais facilmente consumido por clientes construídos com qualquer linguagem, em especial HTML5. | |||
O estilo REST é formado por um conjunto de regras no topo do protocolo HTTP que foram comunicadas pela primeira vez por Roy Fielding em sua tese de doutorado. Depois de seu surgimento, começou a se tornar uma alternativa mais leve de comunicação entre computadores (cliente e servidor). Para ser considerado REST, o web service deve ser ou possuir: Interface uniforme, Stateless, Cacheável, Cliente-Servidor, Sistema em camadas e Código sob demanda. | |||
=== Interface Uniforme === | |||
Para ser considerado REST, o web service deve ser ou possuir: Interface uniforme, Stateless, Cacheável, Cliente-Servidor, Sistema em camadas e Código sob demanda. Veremos em detalhes cada uma delas a seguir. | |||
O REST deverá ser baseado em recursos identificados por URLs. Diferente de SOAP, que é baseado em ações, como “obter produto”, o REST é baseado no recurso, deixando a definição das ações para os métodos HTTP. Portanto, quando quisermos obter um recurso, como um produto, faremos uma requisição GET para a URL que o localiza. | |||
é importante entendermos que as URLs serão definidas por substantivos e não por verbos, salvo quando for necessário fazer algum cálculo ou algo que não esteja vinculado a um recurso no servidor. O motivo disso é bem simples: tornar a interface simples. A '''Listagem 1''' mostra exemplos de URLs para um recurso Produto que não seguem esse padrão e a '''Listagem 2''' mostra exemplos que o seguem. | |||
'''Listagem 1.''' Exemplos de URL que não seguem os princípios do REST. | |||
/listarProdutos = URL para listar todos os produtos | |||
/obterProduto/1 = URL para obter o produto 1 | |||
/criarProduto = URL para criar produto | |||
/deletarProduto = URL para deletar produto | |||
'''Listagem 2.''' Exemplos de URL que seguem os princípios do REST. | |||
/produtos = URL para ações sobre recursos do tipo Produto | |||
/produtos/1 = URL para ações sobre um produto específico | |||
As ações são definidas utilizando os métodos do protocolo HTTP: GET, POST, PUT, DELETE e HEAD. | |||
= Software = | = Software = | ||
As API's são utilizadas em ambientes que precisam de dados de outro local para serem transmitidas as informações tais como: Google Maps, Marketplaces, operadoras de cartão, redes sociais, etc. | |||
Não existe uma única linguagem para ser feita a API, mas a mais utilizada é a Java, é possivel até procurar programas com interface que facilitem essa criação, o Javadoc. As outras linguagens que podem serem utilizadas são NodeJs, Ruby, PHP, etc. | |||
<br> | <br> | ||
= Topologia ou Esquema funcional = | = Topologia ou Esquema funcional = | ||
* https://cms-assets.tutsplus.com/uploads/users/487/posts/22543/image/real-life-architecture-png.png | |||
= Conexões = | = Conexões = | ||
* Links externos | |||
Nos sites a seguir podem ser encontrados várias API's para serem utilizadas em integrações, veja: | |||
http://99apis.com/home | |||
https://market.mashape.com/explore?page=1 | |||
https://www.programmableweb.com/ | |||
* Links internos | |||
O link a seguir se relaciona com API, é uma integração também, mas apenas por rede, é possível ter mais informações acessando: | |||
http://www.sourceinnovation.com.br/w/index.php?title=Projeto_WebService&veaction=edit&redlink=1 | |||
<br> | <br> | ||
= Informações adicionais = | = Informações adicionais = | ||
Atualmente a maioria dos projetos precisam de API para obterem informações facilitadas, é preciso estar a par desse assunto e de API's novas para estar a frente de concorrentes e disponibilizar melhores informações para clientes.<br> | |||
<br> | |||
= Referências bibiográficas = | = Referências bibiográficas = | ||
Google Maps para todas as plataformas. Disponível em: <<nowiki>https://developers.google.com/maps/</nowiki>> acesso em 17 de set de 2017 | |||
2º PELOI, R. 5 sites para descobrir APIs. Disponível em <<nowiki>https://sensedia.com/blog/apis/sites-para-descobrir-apis/</nowiki>> acesso em 19 de set de 2017 | |||
<br> | <br> | ||
Edição atual tal como às 21h54min de 16 de outubro de 2017
Especificação técnica
API é um acrônimo de Application Programming Interface, Interface de Programação de Aplicação, traduzindo ao português. Ela é composta de informações que podem ser utilizadas para extrair dados de um certo local e transportá-los para outro local, definindo comportamentos específicos de determinados objetos em uma interface para outras aplicações, para isso é necessário integrar com um software entrando com chave de acesso para ser permitido o fluxo de dados.
Código fonte de exemplo
Exemplo de código chave da API do Google Maps:
<syntaxhighlight>
<meta-data android:name="com.google.android.geo.API_KEY" android:value="BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75"/> </syntaxhighlight> Exemplo de uma configuração de um projeto:<syntaxhighlight>
- Proguard config for the demo project.
- This file only contains the proguard options required by the Google Maps
- Android API v2. It should be used in addition to the one provided by the
- Android SDK (<sdk>/tools/proguard/proguard-android-optimize.txt).
- For more details on the use of proguard in Android, please read:
- http://proguard.sourceforge.net/manual/examples.html#androidapplication
-optimizations !code/simplification/variable
-keep public class * extends android.app.Activity -keep public class * extends android.app.Fragment -keep public class * extends android.support.v4.app.Fragment
- The Maps API uses custom Parcelables.
- Use this rule (which is slightly broader than the standard recommended one)
- to avoid obfuscating them.
-keepclassmembers class * implements android.os.Parcelable {
static *** CREATOR;
}
- The Maps API uses serialization.
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID; static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve();
} </syntaxhighlight> Exemplo do main da API do Google Maps:<syntaxhighlight lang="xml" line="1"> <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mapdemo" >
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="22" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="22" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/demo_title"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".BasicMapDemoActivity"
android:label="@string/basic_map_demo_label"/>
<activity
android:name=".CameraDemoActivity"
android:label="@string/camera_demo_label"/>
<activity
android:name=".CameraClampingDemoActivity"
android:label="@string/camera_clamping_demo_label"/>
<activity
android:name=".CircleDemoActivity"
android:label="@string/circle_demo_label"/>
<activity
android:name=".EventsDemoActivity"
android:label="@string/events_demo_label"/>
<activity
android:name=".GroundOverlayDemoActivity"
android:label="@string/ground_overlay_demo_label"/>
<activity
android:name=".IndoorDemoActivity"
android:label="@string/indoor_demo_label"/>
<activity
android:name=".LayersDemoActivity"
android:label="@string/layers_demo_label"/>
<activity
android:name=".LiteDemoActivity"
android:label="@string/lite_demo_label"/>
<activity
android:name=".LiteListDemoActivity"
android:label="@string/lite_list_demo_label"/>
<activity
android:name=".LocationSourceDemoActivity"
android:label="@string/location_source_demo_label"/>
<activity
android:name=".MapInPagerDemoActivity"
android:label="@string/map_in_pager_demo_label"/>
<activity
android:name=".MarkerDemoActivity"
android:label="@string/marker_demo_label"/>
<activity
android:name=".MarkerCloseInfoWindowOnRetapDemoActivity"
android:label="@string/marker_close_info_window_on_retap_demo_label"/>
<activity
android:name=".MultiMapDemoActivity"
android:label="@string/multi_map_demo_label"/>
<activity
android:name=".MyLocationDemoActivity"
android:label="@string/my_location_demo_label"/>
<activity
android:name=".OptionsDemoActivity"
android:label="@string/options_demo_label"/>
<activity
android:name=".PolygonDemoActivity"
android:label="@string/polygon_demo_label"/>
<activity
android:name=".PolylineDemoActivity"
android:label="@string/polyline_demo_label"/>
<activity
android:name=".ProgrammaticDemoActivity"
android:label="@string/programmatic_demo_label"/>
<activity
android:name=".RawMapViewDemoActivity"
android:label="@string/raw_map_view_demo_label"/>
<activity
android:name=".RetainMapDemoActivity"
android:label="@string/retain_map_demo_label"/>
<activity
android:name=".SaveStateDemoActivity"
android:label="@string/save_state_demo_label"/>
<activity
android:name=".SnapshotDemoActivity"
android:label="@string/snapshot_demo_label"/>
<activity
android:name=".SplitStreetViewPanoramaAndMapDemoActivity"
android:label="@string/split_street_view_panorama_and_map_demo_label"/>
<activity
android:name=".StreetViewPanoramaBasicDemoActivity"
android:label="@string/street_view_panorama_basic_demo_label"/>
<activity
android:name=".StreetViewPanoramaEventsDemoActivity"
android:label="@string/street_view_panorama_events_demo_label"/>
<activity
android:name=".StreetViewPanoramaNavigationDemoActivity"
android:label="@string/street_view_panorama_navigation_demo_label"/>
<activity
android:name=".StreetViewPanoramaOptionsDemoActivity"
android:label="@string/street_view_panorama_options_demo_label"/>
<activity
android:name=".StreetViewPanoramaViewDemoActivity"
android:label="@string/street_view_panorama_view_demo_label"/>
<activity
android:name=".StyledMapDemoActivity"
android:label="@string/styled_map_demo_label"/>
<activity
android:name=".TagsDemoActivity"
android:label="@string/tags_demo_label"/>
<activity
android:name=".TileCoordinateDemoActivity"
android:label="@string/tile_coordinate_demo_label"/>
<activity
android:name=".TileOverlayDemoActivity"
android:label="@string/tile_overlay_demo_label"/>
<activity
android:name=".UiSettingsDemoActivity"
android:label="@string/ui_settings_demo_label"/>
<activity
android:name=".VisibleRegionDemoActivity"
android:label="@string/visible_region_demo_label"/>
</application>
</manifest> </syntaxhighlight> https://github.com/Sensedia
https://github.com/Sensedia/apix2017-microservice-products
Funcionamento
O funcionamento da Tecnologia é dado a partir da chave, chamada API KEY, dado pelo fornecedor da API, como está no primeiro código de exemplo acima. A partir disso, a API pode ter ou não interface, dependendo de qual é utilizada.
Para ela ser criada, existe o estilo REST de construção de web services, bem como as melhores práticas comumente adotadas na criação de uma RESTful API. Essa forma é útil para desenvolvedores que precisem criar uma API pública ou privada para expor dados e funcionalidades de um sistema web para outras aplicações, sejam elas web, mobile ou desktop.
O REST é mais simples que o SOAP. Foi projetado para ser usado em clientes “magros”, o que o torna ideal para utilização em dispositivos com capacidades limitadas. As respostas do REST são cacheáveis, diferente do SOAP. Isso dá um grande aumento de performance em clientes simples.
Enquanto o SOAP utiliza apenas XML, o REST pode se comunicar através de diversos formatos, sendo JSON o mais usado. Por ser um formato menos verboso e normalmente menor, a transferência de dados com o uso de JSON causa uma carga menor na rede, além de ser mais facilmente consumido por clientes construídos com qualquer linguagem, em especial HTML5.
O estilo REST é formado por um conjunto de regras no topo do protocolo HTTP que foram comunicadas pela primeira vez por Roy Fielding em sua tese de doutorado. Depois de seu surgimento, começou a se tornar uma alternativa mais leve de comunicação entre computadores (cliente e servidor). Para ser considerado REST, o web service deve ser ou possuir: Interface uniforme, Stateless, Cacheável, Cliente-Servidor, Sistema em camadas e Código sob demanda.
Interface Uniforme
Para ser considerado REST, o web service deve ser ou possuir: Interface uniforme, Stateless, Cacheável, Cliente-Servidor, Sistema em camadas e Código sob demanda. Veremos em detalhes cada uma delas a seguir. O REST deverá ser baseado em recursos identificados por URLs. Diferente de SOAP, que é baseado em ações, como “obter produto”, o REST é baseado no recurso, deixando a definição das ações para os métodos HTTP. Portanto, quando quisermos obter um recurso, como um produto, faremos uma requisição GET para a URL que o localiza. é importante entendermos que as URLs serão definidas por substantivos e não por verbos, salvo quando for necessário fazer algum cálculo ou algo que não esteja vinculado a um recurso no servidor. O motivo disso é bem simples: tornar a interface simples. A Listagem 1 mostra exemplos de URLs para um recurso Produto que não seguem esse padrão e a Listagem 2 mostra exemplos que o seguem.
Listagem 1. Exemplos de URL que não seguem os princípios do REST.
/listarProdutos = URL para listar todos os produtos /obterProduto/1 = URL para obter o produto 1 /criarProduto = URL para criar produto /deletarProduto = URL para deletar produto
Listagem 2. Exemplos de URL que seguem os princípios do REST.
/produtos = URL para ações sobre recursos do tipo Produto /produtos/1 = URL para ações sobre um produto específico
As ações são definidas utilizando os métodos do protocolo HTTP: GET, POST, PUT, DELETE e HEAD.
Software
As API's são utilizadas em ambientes que precisam de dados de outro local para serem transmitidas as informações tais como: Google Maps, Marketplaces, operadoras de cartão, redes sociais, etc.
Não existe uma única linguagem para ser feita a API, mas a mais utilizada é a Java, é possivel até procurar programas com interface que facilitem essa criação, o Javadoc. As outras linguagens que podem serem utilizadas são NodeJs, Ruby, PHP, etc.
Topologia ou Esquema funcional
Conexões
- Links externos
Nos sites a seguir podem ser encontrados várias API's para serem utilizadas em integrações, veja:
https://market.mashape.com/explore?page=1
https://www.programmableweb.com/
- Links internos
O link a seguir se relaciona com API, é uma integração também, mas apenas por rede, é possível ter mais informações acessando:
http://www.sourceinnovation.com.br/w/index.php?title=Projeto_WebService&veaction=edit&redlink=1
Informações adicionais
Atualmente a maioria dos projetos precisam de API para obterem informações facilitadas, é preciso estar a par desse assunto e de API's novas para estar a frente de concorrentes e disponibilizar melhores informações para clientes.
Referências bibiográficas
Google Maps para todas as plataformas. Disponível em: <https://developers.google.com/maps/> acesso em 17 de set de 2017
2º PELOI, R. 5 sites para descobrir APIs. Disponível em <https://sensedia.com/blog/apis/sites-para-descobrir-apis/> acesso em 19 de set de 2017
