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>

  1. Proguard config for the demo project.
  1. This file only contains the proguard options required by the Google Maps
  2. Android API v2. It should be used in addition to the one provided by the
  3. Android SDK (<sdk>/tools/proguard/proguard-android-optimize.txt).
  4. For more details on the use of proguard in Android, please read:
  5. 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

  1. The Maps API uses custom Parcelables.
  2. Use this rule (which is slightly broader than the standard recommended one)
  3. to avoid obfuscating them.

-keepclassmembers class * implements android.os.Parcelable {

   static *** CREATOR;

}

  1. 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.


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:

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


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