1

为了响应一些返回分页数据数量的请求,我遇到了两个键,它们指的是指向下一页的链接和当前页面的上一页。

{
    "data": {
        "next": "http://localhost/api/contents/posts/?page=3",
        "count": 132,
        "previous": "http://localhost/api/contents/posts/?page=1",
        "items": []
          }
}

在一些代码中,开发人员使用这些 url 来访问下一个和上一个数据。

但在我的情况下,我在其方法调用中生成每个请求的 url,并在请求方法中附加基本 url。这是我的代码:

常量类:

struct Urls {
    static let baseUrl = "http://localhost/api"

    // MARK:- Content Api
    struct Post {
          static let baseContentURL = "/contents"

          static let posts = "/posts"
      }
     }

发布请求生成器类:

func postListByPage(_ pageNumber: String, completion: @escaping(_ inner : () throws -> Post) -> Void) {
        let relativeUrl = Urls.Post.baseContentURL + Urls.Post.posts + "/?page=" + pageNumber

// get request code
}

API调用类:

func getRequest(relativeUrl: String, tryCount: Int = 1, completion: @escaping (_ inner: () throws -> Data) -> Void) {
let url = Urls.baseUrl + relativeUrl

//send request by URLSession
}

当我能够动态处理这些请求时,我不确定下一个 url 的确切用法是什么,而且我认为使用此字段会破坏我的代码中 API 调用中的所有层规则。

我的问题:

  1. 这些字段的确切用途是什么?
  2. 如果使用这些字段更好,我该如何使用当前结构来做到这一点?
4

1 回答 1

3

这些字段的确切用途是什么?

您使用的 API 希望您使用查询参数进行分页,并手动提取页码。

一个常见的原因是因为他们遵循实际的 RESTful 架构并使用链接来更改状态,或者他们可能希望在不破坏客户端的情况下更改其分页机制。

如果使用这些字段更好,我该如何使用当前结构来做到这一点?

您的代码没有对您正在使用的 API 进行建模或抽象。对于 API 想要如何工作的模型来说,这基本上是错误的抽象。

所以我不能真正告诉你如何在不改变你的情况下使用 API 模型,因为它听起来像:“我怎样才能在不改变的情况下解决这个问题。”

于 2018-09-25T13:18:51.800 回答