Etiqueta: visualeditor
 
(17 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
= Especificação técnica =
= Especificação técnica =
Descrição minuciosa das características da tecnologia, pormenorização com detalhes técnicos e precisos que esclareçam a destinação, ou uso ou operação. Incluir definições, concepções ou caracterizações
 
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.
 
<br>
<br>
== 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"?>
<!--
    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 =
Descrever a forma como a tecnologia funciona descendo nos detalhes de interfaceamento, conexões físicas, sinalização, tráfego de dados ou controle
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.
<br>
 
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 =
Explicar basicamente onde o software é utilizado nesta tecnologia informando possíveis linguagens e outras ferramentas como framqworks, banco de dados, etc. Se possível informar link de download ou referência.
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 =
Desenhar ou plotar  representações visuais estruturadas por meio de diagramas, esquemas, protocolos que exemplfoquem esse tema, logicamente colocando um rodapé explicativo
* https://cms-assets.tutsplus.com/uploads/users/487/posts/22543/image/real-life-architecture-png.png
<br>


= Conexões =
= Conexões =
Incluir links (internos ou externos) temas que tem relação com este, explicando detalhes sobre. Limite de 3 internos e 2 externos.
* 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 =
Descrever detalhes a mais sobre esse tema.
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 =
Relacionar aqui as referências bibliográficas no padrão ABNT.  
Google Maps para todas as plataformas. Disponível em: <<nowiki>https://developers.google.com/maps/</nowiki>> acesso em 17 de set de 2017
Bases de procura: Artigos, publicações acadêmicas, revistas e sites de fornecedores
 
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>

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

  • real-life-architecture-png.png

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