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>
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.
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.
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
Descrever detalhes a mais sobre esse tema.
Referências bibiográficas
<https://developers.google.com/maps/>
<https://sensedia.com/blog/apis/sites-para-descobrir-apis/>Acesso em 19/09/2017
Relacionar aqui as referências bibliográficas no padrão ABNT. Bases de procura: Artigos, publicações acadêmicas, revistas e sites de fornecedores