为什么不使用SQL而不是GraphQL?
最近,我了解了GraphQL,它声称比RESTful更好。但是,我开始怀疑为什么不将SQL语句简单地放入HTTP GET请求中。 例如,在GraphQL中,我将编写 { Movie(id: "cixos5gtq0ogi0126tvekxo27") { id title actors { name } } } 这并不比它的SQL比较简单 SELECT id, title FROM movies WHERE id = cixos5gtq0ogi0126tvekxo27; SELECT actors.name FROM actors, actors_movies WHERE actors.id == movies.actor_id AND movie.id == cixos5gtq0ogi0126tvekxo27; 也许我们可以对查询进行URL编码并发送到服务器 GET endpoint?q=SELECT%20id%2C%20title%20FROM%20movies%20WHERE%20id%20%3D%20cixos5gtq0ogi0126tvekxo27%3B%0ASELECT%20actors.name%20FROM%20actors%2C%20actors_movies%20WHERE%20actors.id%20%3D%3D%20movies.actor_id%20AND%20movie.id%20%3D%3D%20cixos5gtq0ogi0126tvekxo27%3B HTTP/1.1 是的,查询URL可能太长,但是如果您不关心REST遵从性,则可以将其放入POST请求的正文中。(顺便说一句,我认为需要对REST进行HTTP RFC的修订才能有意义:限制查询字符串的长度从一开始就将实现与规范混合在一起) 从客户端直接发出SQL的优势还在于 解析GraphQL不需要服务器端代码/库,从而减少了开发时间。 解析GraphQL不需要服务器端开销,从而减少了运行时间。 SQL语句比GraphQL灵活得多,因为(在大多数情况下)GraphQL无论如何都会简化为SQL。 每个人都知道SQL。 那么,GraphQL与SQL相比有什么优势?