佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1767|回复: 12

website API 该如何创造?小弟是新手 完全不懂API 请大师教教

[复制链接]
发表于 19-2-2016 05:20 PM | 显示全部楼层 |阅读模式
HI, 各位大神们 请问如果要建立一个website API该从哪里下手呢? 现在我想做的是 该如何将website 里的data 转去API 放在mobile apps 那边。所以我应该从哪里开始呢? 请各位大大指点指点。。。。 还是有什么tutorial可以让我参考请大师指点  感恩!
回复

使用道具 举报


ADVERTISEMENT

发表于 20-2-2016 10:32 AM | 显示全部楼层
.NET 的话可以用 WebAPI OData
google 一下,官方就有教程了。
回复

使用道具 举报

发表于 24-2-2016 10:22 AM | 显示全部楼层
请问你以什么programming language为主?
回复

使用道具 举报

发表于 27-2-2016 12:27 AM | 显示全部楼层
要搞懂最基本的 Restful 和 json 先
回复

使用道具 举报

 楼主| 发表于 27-2-2016 02:10 PM | 显示全部楼层
keatkeat87 发表于 20-2-2016 10:32 AM
.NET 的话可以用 WebAPI OData
google 一下,官方就有教程了。

可是我的是有PHP 的 wor, 还有啊,我想问看啊 API可以在localhost test 吗?
回复

使用道具 举报

 楼主| 发表于 27-2-2016 02:11 PM | 显示全部楼层
wesleychong 发表于 24-2-2016 10:22 AM
请问你以什么programming language为主?

我是用PHP laravel 的

回复

使用道具 举报

Follow Us
 楼主| 发表于 27-2-2016 02:17 PM | 显示全部楼层
hooi1983 发表于 27-2-2016 12:27 AM
要搞懂最基本的 Restful 和 json 先

好好 我去看看 RESTful 我知道他是可以Post,get之类的东西来拿资料的.. 可是那个script因该放在那里呢? 还有这么让我的mobile app 去拿到那边的资料呢? 我找了蛮多资料 都没有找到真正我想要的
回复

使用道具 举报

发表于 27-2-2016 04:48 PM | 显示全部楼层
seongkiat123 发表于 27-2-2016 02:17 PM
好好 我去看看  RESTful 我知道他是可以Post,get之类的东西来拿资料的.. 可是那个script因该放在那里 ...

你只需要 create http://xxx.com/getdata 的 url
然后 app call 这个 url 就可以拿到资料了
不是 script 来的,要用到 programming language
回复

使用道具 举报


ADVERTISEMENT

发表于 27-2-2016 06:33 PM | 显示全部楼层
你可以这么简单的去理解.  (我说的不对的话,请各位大大指正一下,以免我不小心误人子弟 ^^")
从前我们做游览器网页的时候,方式是这样的 :
游览器输入地址后发送一个http请求到服务器,服务器返回一个 html 格式的内容,游览器再解析这个内容到银幕上去。
而做手机app, 你没有游览器帮你做这些了,你要自己去实现页面的渲染.
这个时候服务器如果还是返回html格式就没什么意义了。所以为了方便兼容各种设备,服务器干脆就只返回json格式.就是返回数据而已。游览器使用javascript 去处理这些json最终变成html显示在页面上。手机则用手机的语言去处理这些json数据。
那么一个 http 请求,如果是访问页面的话,我们说是 web page request
那么一个 http 请求, 如果访问的是数据的话,我们说是 web Api request
不管哪一个其实都是 http request 来的.
这就是我们通常指的 Api.

对于数据的访问,你会直接想到的就是sql. 因为我们大部分时候就是围绕着 sql select,insert,update,delete
而restful 的接口设计就非常复合这一点,比如 get,post,put,delete
所以就有了 restful Api 咯

既然 Api 就是 http request , 那么 localhost 可以 test http request 自然也就可以 test Api了。

我只是抛砖引玉一下,希望高手可以解释的清楚一些, 谢谢



回复

使用道具 举报

发表于 28-2-2016 12:22 AM | 显示全部楼层
你的php可以在localhost execute吗?如果可以,你就可以用localhost test。

if(can)
  you can run API locally
else
  please download Wamp from http://www.wampserver.com/en/

//--------------------------------------------

其实,你会php,应该对API没问题。例如,你有一个 localhost/employee.php?id=002
我可以猜想你去database拿了一个id=2的个人资料,把内容显示出来,可能你会用到html,css把它变美美。
可以如何3rd paty的application只是要你的资料。你就需要API, api = Application programming interface (我翻译为《其他程序可沟通介面》,它不需要了解你如何拿到资料,它只是要结果)
其实,如何你了解window programming的话,DLL本身就是一个API,你只要知道什么methods和parameters,你就可以得到你要的结果。只是现在网络时代,大家以为API只是存在在网络而已。

回到正题,如何你要其他application可以用你的资料。当有人/application request localhost/employee.php?id=002 时,你去database拿到data时,你直接把data变成JSON,xml,csv就可以了 。不管是JSON,xml,csv,其实都是text file。不一样的只是data structure,如何interpret(分析)你的data。JSON流行是因为column和data一目了然,如果你return 一个text file也是可以的: 2|mr lee|30|03-3456789 也是可以的。只是你要解释2是什么,mr lee是什么。
回复

使用道具 举报

发表于 28-2-2016 04:21 PM | 显示全部楼层
如果还是很抽象, 不妨看一看别人的API

比如http://jsonplaceholder.typicode.com/users会得到以下的结果

  1. [
  2.   {
  3.     "id": 1,
  4.     "name": "Leanne Graham",
  5.     "username": "Bret",
  6.     "email": "Sincere@april.biz",
  7.     "address": {
  8.       "street": "Kulas Light",
  9.       "suite": "Apt. 556",
  10.       "city": "Gwenborough",
  11.       "zipcode": "92998-3874",
  12.       "geo": {
  13.         "lat": "-37.3159",
  14.         "lng": "81.1496"
  15.       }
  16.     },
  17.     "phone": "1-770-736-8031 x56442",
  18.     "website": "hildegard.org",
  19.     "company": {
  20.       "name": "Romaguera-Crona",
  21.       "catchPhrase": "Multi-layered client-server neural-net",
  22.       "bs": "harness real-time e-markets"
  23.     }
  24.   },
  25.   {
  26.     "id": 2,
  27.     "name": "Ervin Howell",
  28.     "username": "Antonette",
  29.     "email": "Shanna@melissa.tv",
  30.     "address": {
  31.       "street": "Victor Plains",
  32.       "suite": "Suite 879",
  33.       "city": "Wisokyburgh",
  34.       "zipcode": "90566-7771",
  35.       "geo": {
  36.         "lat": "-43.9509",
  37.         "lng": "-34.4618"
  38.       }
  39.     },
  40.     "phone": "010-692-6593 x09125",
  41.     "website": "anastasia.net",
  42.     "company": {
  43.       "name": "Deckow-Crist",
  44.       "catchPhrase": "Proactive didactic contingency",
  45.       "bs": "synergize scalable supply-chains"
  46.     }
  47.   },
  48.   {
  49.     "id": 3,
  50.     "name": "Clementine Bauch",
  51.     "username": "Samantha",
  52.     "email": "Nathan@yesenia.net",
  53.     "address": {
  54.       "street": "Douglas Extension",
  55.       "suite": "Suite 847",
  56.       "city": "McKenziehaven",
  57.       "zipcode": "59590-4157",
  58.       "geo": {
  59.         "lat": "-68.6102",
  60.         "lng": "-47.0653"
  61.       }
  62.     },
  63.     "phone": "1-463-123-4447",
  64.     "website": "ramiro.info",
  65.     "company": {
  66.       "name": "Romaguera-Jacobson",
  67.       "catchPhrase": "Face to face bifurcated interface",
  68.       "bs": "e-enable strategic applications"
  69.     }
  70.   },
  71.   {
  72.     "id": 4,
  73.     "name": "Patricia Lebsack",
  74.     "username": "Karianne",
  75.     "email": "Julianne.OConner@kory.org",
  76.     "address": {
  77.       "street": "Hoeger Mall",
  78.       "suite": "Apt. 692",
  79.       "city": "South Elvis",
  80.       "zipcode": "53919-4257",
  81.       "geo": {
  82.         "lat": "29.4572",
  83.         "lng": "-164.2990"
  84.       }
  85.     },
  86.     "phone": "493-170-9623 x156",
  87.     "website": "kale.biz",
  88.     "company": {
  89.       "name": "Robel-Corkery",
  90.       "catchPhrase": "Multi-tiered zero tolerance productivity",
  91.       "bs": "transition cutting-edge web services"
  92.     }
  93.   },
  94.   {
  95.     "id": 5,
  96.     "name": "Chelsey Dietrich",
  97.     "username": "Kamren",
  98.     "email": "Lucio_Hettinger@annie.ca",
  99.     "address": {
  100.       "street": "Skiles Walks",
  101.       "suite": "Suite 351",
  102.       "city": "Roscoeview",
  103.       "zipcode": "33263",
  104.       "geo": {
  105.         "lat": "-31.8129",
  106.         "lng": "62.5342"
  107.       }
  108.     },
  109.     "phone": "(254)954-1289",
  110.     "website": "demarco.info",
  111.     "company": {
  112.       "name": "Keebler LLC",
  113.       "catchPhrase": "User-centric fault-tolerant solution",
  114.       "bs": "revolutionize end-to-end systems"
  115.     }
  116.   },
  117.   {
  118.     "id": 6,
  119.     "name": "Mrs. Dennis Schulist",
  120.     "username": "Leopoldo_Corkery",
  121.     "email": "Karley_Dach@jasper.info",
  122.     "address": {
  123.       "street": "Norberto Crossing",
  124.       "suite": "Apt. 950",
  125.       "city": "South Christy",
  126.       "zipcode": "23505-1337",
  127.       "geo": {
  128.         "lat": "-71.4197",
  129.         "lng": "71.7478"
  130.       }
  131.     },
  132.     "phone": "1-477-935-8478 x6430",
  133.     "website": "ola.org",
  134.     "company": {
  135.       "name": "Considine-Lockman",
  136.       "catchPhrase": "Synchronised bottom-line interface",
  137.       "bs": "e-enable innovative applications"
  138.     }
  139.   },
  140.   {
  141.     "id": 7,
  142.     "name": "Kurtis Weissnat",
  143.     "username": "Elwyn.Skiles",
  144.     "email": "Telly.Hoeger@billy.biz",
  145.     "address": {
  146.       "street": "Rex Trail",
  147.       "suite": "Suite 280",
  148.       "city": "Howemouth",
  149.       "zipcode": "58804-1099",
  150.       "geo": {
  151.         "lat": "24.8918",
  152.         "lng": "21.8984"
  153.       }
  154.     },
  155.     "phone": "210.067.6132",
  156.     "website": "elvis.io",
  157.     "company": {
  158.       "name": "Johns Group",
  159.       "catchPhrase": "Configurable multimedia task-force",
  160.       "bs": "generate enterprise e-tailers"
  161.     }
  162.   },
  163.   {
  164.     "id": 8,
  165.     "name": "Nicholas Runolfsdottir V",
  166.     "username": "Maxime_Nienow",
  167.     "email": "Sherwood@rosamond.me",
  168.     "address": {
  169.       "street": "Ellsworth Summit",
  170.       "suite": "Suite 729",
  171.       "city": "Aliyaview",
  172.       "zipcode": "45169",
  173.       "geo": {
  174.         "lat": "-14.3990",
  175.         "lng": "-120.7677"
  176.       }
  177.     },
  178.     "phone": "586.493.6943 x140",
  179.     "website": "jacynthe.com",
  180.     "company": {
  181.       "name": "Abernathy Group",
  182.       "catchPhrase": "Implemented secondary concept",
  183.       "bs": "e-enable extensible e-tailers"
  184.     }
  185.   },
  186.   {
  187.     "id": 9,
  188.     "name": "Glenna Reichert",
  189.     "username": "Delphine",
  190.     "email": "Chaim_McDermott@dana.io",
  191.     "address": {
  192.       "street": "Dayna Park",
  193.       "suite": "Suite 449",
  194.       "city": "Bartholomebury",
  195.       "zipcode": "76495-3109",
  196.       "geo": {
  197.         "lat": "24.6463",
  198.         "lng": "-168.8889"
  199.       }
  200.     },
  201.     "phone": "(775)976-6794 x41206",
  202.     "website": "conrad.com",
  203.     "company": {
  204.       "name": "Yost and Sons",
  205.       "catchPhrase": "Switchable contextually-based project",
  206.       "bs": "aggregate real-time technologies"
  207.     }
  208.   },
  209.   {
  210.     "id": 10,
  211.     "name": "Clementina DuBuque",
  212.     "username": "Moriah.Stanton",
  213.     "email": "Rey.Padberg@karina.biz",
  214.     "address": {
  215.       "street": "Kattie Turnpike",
  216.       "suite": "Suite 198",
  217.       "city": "Lebsackbury",
  218.       "zipcode": "31428-2261",
  219.       "geo": {
  220.         "lat": "-38.2386",
  221.         "lng": "57.2232"
  222.       }
  223.     },
  224.     "phone": "024-648-3804",
  225.     "website": "ambrose.net",
  226.     "company": {
  227.       "name": "Hoeger LLC",
  228.       "catchPhrase": "Centralized empowering task-force",
  229.       "bs": "target end-to-end models"
  230.     }
  231.   }
  232. ]
复制代码


除了看得到的, 也不要忘记看Headers, 比如
  1. Content-Type:application/json
复制代码
回复

使用道具 举报

 楼主| 发表于 15-3-2016 04:36 PM | 显示全部楼层
OHh 謝謝大家 我的問題暫時解決了  小弟感激不盡
回复

使用道具 举报

发表于 18-3-2016 04:20 PM | 显示全部楼层
既然你都用laravel了,何不用lumen來寫api
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 29-7-2025 05:20 AM , Processed in 0.227162 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表