Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
443 views
in Technique[技术] by (71.8m points)

RESTFUL API 除了简单的对TABLE CRUD以外,其他的功能该如何命名?

网路上看到的RESTFUL API的教学,大多都是将1张database裡面的insert,update,delete,select,按照某些URL的命名规则将加上不同http method做出相对应的资料库操作。比如说

GET -> http://xx.xx/api/user/id 就是取得某id的user数据
POST -> http://xx.xx/api/user 再放一些数据在http body做为user的数据 ->就是新增USER

但我只知道RESTFUL API 是需要这样的命名风格,再加上相对应回应码。

如果我想要比较複杂的sql操作,比如说取得所有拥有订单的客户,以北风资料库为例,相对应的SQL語法会是:

SELECT * FROM CUSTOMERS INNER JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMERID

牵涉到2张表的SQL操作,如果要对应到RESTFUL API的风格,请问我该如何命名或者建置呢?

我想到的就是额外定义一个API的URL,对应到一个自己的sql操作和回应

例如:

GET => http://xx.xx/api/customers-with-orders 

回应从这段SQL语法

SELECT * FROM CUSTOMERS INNER JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMERID

取得的资料

请问这样自己任意定义URL是符合RESTFUL 风格的吗? 如果不是的话,那该怎麽做呢?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

个人觉得,不一定要那么严苛吧,可以灵活点,可以定一些query作为查询条件,比如

/customers?hasOrders=1


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

56.7k users

...