2012-05-18 56 views
7

對不起,如果這是一個基本問題。但我打算爲我的網站做一個API。首先這個api將被我使用,但後來我會發布給開發者使用它。我很困惑,這個網站將被用於移動應用程序和網站。我打算爲此製作Android應用程序。如何製作json api

問題是我必須在不同的語言中製作這個api,例如用於android平臺的Java,用於iOS的Objective C以及用於web的javascript和php?

如果我只在JavaScript中創建它,它可以用於多個平臺嗎?

回答

7

在服務器端,您的JSON API將在一個平臺上用一種語言編寫,這可能是PHP,.NET或您選擇的任何平臺。

在客戶端(iPhone,Android等)您需要編寫一個客戶端,該客戶端能夠發出請求並處理對您的JSON API的響應。

但是,爲了在您的客戶端API中實施一致性,您可以使用一種模式,例如請求 - 回覆模式,我總是將它用作易於使用和實現的模式。

這個想法是針對每個JSON API方法的,你有一個Request類和一個Response類。您還可以編寫代表您的JSON API的服務客戶端。

一個例子

比方說,我有一個JSON的服務,讓我聯繫方式來自我的地址簿,它可能有這些服務的方法:在Java中

/contact/{id} 
/address_book 
/save_contact/{id} 

我服務的客戶端(例如)可以有這個接口:

public interface AddressBookClient { 
    public GetContactResponse getContact(GetContactRequest request); 
    public GetAddressBookResponse getAddressBook(GetAddressBookRequest request); 
    public SaveContactResponse saveContact(SaveContactRequest request); 
} 

儘管實施會在客戶端平臺有效值,使用相同的方法或模式將保持一致。

希望有所幫助。

6

我會建議像基於JSON的REST完整API。

這使得您的API語言無關。

一旦制定了API,您就可以用流行語言製作客戶端庫。

+4

我希望降級答案的原因。 –

3

如果這個API是基於JSON的,那麼它現在幾乎適用於任何流行的語言。您可以在使用不同語言構建的應用程序之間進行通信,而不會出現問題

您可以在official JSON site處看到各種語言庫的大量列表。

1

我使用的URL請求JSON:

api.example.com/api.php?action=User.login&username=admin&password=111 

的JSON的反應是:

{ 
    "resultcode":100, 
    "resultdata":{ 
     "id":"1", 
     "username":"admin", 
     "password":"$1$$TUPijxhaACBBZHMowbtgD.", 
     "name":"chenwendong", 
     "email":"[email protected]", 
     "sex":"\u7537", 
     "age":"11", 
     "phone":"15811111111", 
     "address":"\u5317\u4eac\u7231\u7231\u7231\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a\u554a", 
     "province_id":"1", 
     "city_id":"1", 
     "last_login_ip":"127.0.0.1", 
     "last_login_time":"2012-05-07 17:32:55", 
     "state":"1", 
     "intime":"2012-05-07 09:49:11", 
     "is_deleted":"0", 
     "province":"\u5317\u4eac\u5e02", 
     "city":"", 
     "sid":"fcd6321c4cd4748a0cee2e7cc337506b", 
     "uid":"1", 
     "message_count":"11" 
    } 
} 

然後,有人可以使用Android JSON進行解碼。