小编Bra*_*aek的帖子

Django REST框架:什么时候创建超链接资源和何时嵌套资源?如何发布嵌套资源?

我正在使用Django REST Framework构建REST Web API.事情进展顺利,但我遇到了嵌套资源的问题.首先,REST API中的所有关系都是超链接的.例如,帖子看起来像这样:

{
    "path": "http://api.myproject.com/posts/1.json",
    "id": 1,
    "author": "http://api.myproject.com/users/broak.json",
    "image": "/images/posts/cxyUzlPo.jpg",
    "header": "Who am I?",
    "footer": "I am a champion!",
    "date": "2014-11-09 15:16",
    "likes": "http://api.myproject.com/posts/1/likes.json",
    "comments": "http://api.myproject.com/posts/1/comments.json",
    "likes_count": 0,
    "comments_count": 0
}
Run Code Online (Sandbox Code Playgroud)

帖子和作者(用户)之间的关系是超链接的.如果要创建新帖子,则需要指定指向特定用户的正确超链接 - 这样可以正常工作.

当调用帖子列表时,事情变得低效,因为你必须为每个帖子为每个作者进行额外的API调用.我通过使用NESTED资源而不是HYPERLINKED资源解决了这个问题,因此每个帖子现在都包含有关作者的所有信息.

{
    "path": "http://api.myproject.com/posts/1.json",
    "id": 1,
    "author": {
        "email": "broak@gmail.com"
        "username": "broak",
        "first_name: "John",
        "last_name": "Broak",
        "is_staff": False,
        "is_active": True,
        "last_login": "02-26-2016"
    },
    "image": "/images/posts/cxyUzlPo.jpg",
    "header": "Who am I?",
    "footer": "I am a champion!",
    "date": "2014-11-09 15:16",
    "likes": "http://api.myproject.com/posts/1/likes.json",
    "comments": "http://api.myproject.com/posts/1/comments.json", …
Run Code Online (Sandbox Code Playgroud)

django rest resources hyperlink django-rest-framework

10
推荐指数
1
解决办法
924
查看次数

如何处理阻止特定HTTP请求方法的代理服务器?

我正在设计一个REST Web API,但最近发现了一些奇怪的东西.

显然,一些代理服务器阻止了特定的HTTP请求方法.在我的例子中,PUT和PATCH方法对于修改资源至关重要.这部分打破了我正在设计的API的功能......

在不破坏RESTful架构约束的情况下,是否有一种绕过此问题的好方法?在我看来没有,因为在通过HTTP设计REST Web API时,提倡完全使用HTTP动词...

api rest proxy http

8
推荐指数
1
解决办法
5042
查看次数

JPA规范是否等效于ResultTransformer.DISTINCT_ROOT_ENTITY?

我想知道JPA规范中是否要使用等效的ResultTransformer.DISTINCT_ROOT_ENTITY?现在,我正在尝试实现搜索功能,为此我必须使用JPA规范(不允许使用CriteriaQuery或其他替代方法)。

我必须在搜索查询中执行JOIN,因为实体之间存在一对多的关系。

所以,现在,我正在这样做:

String type = "admin";
SpecificationBuilder sb = SpecificationBuilder.getInstance();
Specification<WebContentImpl> spec = new Specification<WebContentImpl>() {
    @Override
    public Predicate toPredicate(Root<WebContentImpl> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
        return cb.equal(root.join("users", JoinType.LEFT).get("type"), type);
    }
};
sb.addSpecification(spec);
Run Code Online (Sandbox Code Playgroud)

如您所见,我可以包含一个JOIN。多个用户被映射到一个Web内容项。但是,例如,当有3个用户映射到1个Web内容项时,该Web内容项仅应显示1次,而应显示3次。过去我曾遇到过此问题,标志ResultTransformer.DISTINCT_ROOT_ENTITY当时帮助了我,但现在无法使用该功能。

当然,我可以实施自己的解决方案以省去双打,但这对于性能而言将是可怕的。而且我已经尝试过更改JoinType,但结果始终相同。

有人在那里有一些提示可以帮助我吗?:-)

提前致谢!

亲切的问候,K

java sql jpa distinct

5
推荐指数
1
解决办法
2039
查看次数

Python/Django REST API架构

我正在尝试建立像Instagram这样的小众社交网络作为Python/Django应用程序.

所以关于架构,我需要的东西是(我猜):

  1. REST API(例如api.mystagram.com).
  2. 公共网站(www.mystagram.com或mystagram.com).
  3. URL缩短器(例如mystagr.am).
  4. Android应用
  5. iPhone应用程序
  6. Windows Phone应用
  7. ...

在此之前,我只对一些不太简单的网站构建简单,但从来没有非常复杂的自定义API等.我以前从未构建过自己的REST API(我已经使用过其他REST API),甚至构建了一个Android/iPhone应用程序并将其分发到Play商店/ App Store(尽管我已经制作了一些典型的hello world示例).

所以,对我来说最重要的事情似乎是首先创建一个kick-ass REST API并从那里开始.然而我被几个问题阻止了.

  1. 我应该如何组织公共网站和REST API的项目?这些应该是单独的Django项目还是应该只创建一个Django项目并将公共网站和REST API添加为内部Django模块?
  2. 公共网站是否也应该使用REST API?或者仅仅使用普通的Django模型更好吗?

在此先感谢您的帮助!如果有人知道这个主题(架构)的一些精彩演示,请随时欢迎!

亲切的问候,克里斯托夫

python architecture api django rest

4
推荐指数
1
解决办法
4990
查看次数