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

Arquivo:Real-life-architecture-png.png
Como funciona a API

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

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