我正在实现一个返回JSON编码的有效负载的Web服务.如果服务调用失败 - 例如,由于参数无效 - 将返回JSON编码的错误.但是,我不确定在那种情况下应该返回什么HTTP状态代码.
一方面,似乎HTTP状态代码适用于HTTP:即使返回了应用程序错误,HTTP传输本身也是成功的,建议200 OK响应.
另一方面,RESTful方法似乎暗示如果调用者试图发布到资源,并且请求的JSON参数以某种方式无效,则400 Bad Request是合适的.
我在客户端使用Prototype,它有一个很好的机制,可以根据HTTP状态代码(onSuccess和onFailure)自动调度到不同的回调,所以我很想用状态代码来表示服务成功或失败,但我有兴趣听听是否有人对此事有共同惯例的意见或经验.
谢谢!
我的Python/SQLAlchemy应用程序管理一组节点,所有节点都是从基类Node派生的.我正在使用SQLAlchemy的多态性功能来管理SQLite3表中的节点.这是基本Node类的定义:
class Node(db.Base):
__tablename__ = 'nodes'
id = Column(Integer, primary_key=True)
node_type = Column(String(40))
title = Column(UnicodeText)
__mapper_args__ = {'polymorphic_on': node_type}
Run Code Online (Sandbox Code Playgroud)
并且,作为示例,派生类之一,NoteNode:
class NoteNode(Node):
__mapper_args__ = {'polymorphic_identity': 'note'}
__tablename__ = 'nodes_note'
id = Column(None,ForeignKey('nodes.id'),primary_key=True)
content_type = Column(String)
content = Column(UnicodeText)
Run Code Online (Sandbox Code Playgroud)
现在我需要一种新的节点ListNode,它是零个或多个Node的有序容器.当我加载ListNode时,我希望它具有其ID和标题(来自基本Node类)以及其包含的(子)节点的集合.一个节点可能会出现在不止一个ListNode,所以它不是一个适当的层次.我会沿着这些方向创建它们:
note1 = NoteNode(title=u"Note 1", content_type="text/text", content=u"I am note #1")
session.add(note1)
note2 = NoteNode(title=u"Note 2", content_type="text/text", content=u"I am note #2")
session.add(note2)
list1 = …Run Code Online (Sandbox Code Playgroud)