刚从web开发转到APP接口开发,遇到了一个问题:
在服务器向APP返回数据时,是否需要遵循‘只返回需要的字段’的习惯?
例如我们有个产品表,结构如下
|---ID---|--名称--|--链接--|--日利率--|--月利率--|--购买人数--|--成功率--|
在产品列表页面的时候,只需要ID,名称,链接这三个数据,其他字段在此页面不需要,那么服务器返回数据的时候,是否一定不能把其他在本页面不需要的字段暴露给APP?
如果每次都返回所有字段,后端这边会节省时间和代码量。但是如果返回所有,由于一个表60+的字段,对网络请求和相应速度有影响。
补充一下,该数据在多个地方都在用,每个地方所需要的字段都不太一样,如果从复用的角度看,几乎就是需要返回所有字段。。那么是选择返回所有以便于复用还是每个接口单独设计接口返回字段呢?
大家讲道理2017-04-18 09:51:53
필요에 따라 반환하고, 병합 및 중재하고, 여러 시나리오에서 재사용하세요.
일반적인 상황에서는 모든 반환이 별칭을 사용하여 반환되며 데이터베이스 필드는 노출될 수 없습니다.
高洛峰2017-04-18 09:51:53
이것은 너무 많은 트래픽을 소비하므로 사용자는 만족하지 못할 것입니다.
데이터베이스에 뷰가 없나요? 제품 테이블을 기반으로 뷰를 추가하고 필수 필드만 표시합니다.
SQL 등을 복사하여 붙여넣고 테이블 이름을 View 이름으로 바꾼 다음(그런 다음 SQL 문에서 불필요한 필드를 삭제하면) 거의 충분합니다.
정말 시간도 많이 걸리지 않고, 코드도 많이 변경할 필요가 없습니다. 필드만 커버하는 이러한 뷰는 날아갈 만큼 빠르며 서버 성능에 거의 영향을 미치지 않습니다.
阿神2017-04-18 09:51:53
상황에 따라 다릅니다
이 인터페이스의 재사용을 살펴보세요. 인터페이스가 여러 곳에서 재사용되지만 응답 데이터 구조가 크게 다르지 않으면 모두 반환하세요.
이론적으로는 반환되는 데이터의 양이 적을수록 좋습니다
阿神2017-04-18 09:51:53
들어본 적은 없지만遵循
온 디맨드 방식이 IO를 줄이는 가장 좋은 방법이라고 생각합니다. 사용자 경험이 좋을 뿐만 아니라 서버 부담도 낮습니다.
伊谢尔伦2017-04-18 09:51:53
개인적으로 백엔드는 일반적으로 데이터베이스 필드를 직접 반환하지 않아야 하며 필요한 데이터만 노출하는 것이 가장 좋습니다.
백엔드가 데이터베이스 필드를 직접 반환하는 것은 매우 게으른데, 내부적으로 사용되는 웹 백엔드라면 데이터베이스가 복잡하지 않고, 반환된 데이터를 여러 클라이언트에서 사용하지 않는다는 장점이 있습니다. 간단하고 빠르다는 것입니다. 예를 들어, 테이블 필드가 많은 경우 모든 필드를 쿼리하면 성능이 저하됩니다. 최종 사용자에게 호출되는 API는 여러 클라이언트(웹, 웹, iOS, Android, 타사 사용자 등) 잘 설계된 데이터 구조가 필요합니다.
실제로 백엔드 프레임워크의 ORM
는 일반적으로 반환되는 필드를 제한할 수 있습니다. 또는 alias
필드 이름을 간단히 작성하면 됩니다. 반환된 필드를 더 잘 제어해야 하는 경우 Model
transformer를 사용해야 합니다.
天蓬老师2017-04-18 09:51:53
클라이언트가 요청을 병합해야 하는지 여부에 따라 다르다고 생각합니다. 실제로 걱정되는 것은 몇 바이트에 불과하며 링크에 사진과 같은 스트리밍 데이터를 반환하지 않는다고 너무 많이 생각하지 마십시오. 클라이언트가 자주 소비하는 트래픽 문제에 대해 모두 서버와의 링크 설정을 여러 번 기반으로 합니다.
PHP中文网2017-04-18 09:51:53
가장 좋은 방법은 다음과 같습니다.
1. 반환해야 할 열 이름은 프런트 엔드에서 제공됩니다
2. 서버 측 인터페이스는 범용 인터페이스로 작성되고 SQL은 스플라이싱됩니다. 프런트 엔드에서 제공하는 열 이름에 따라
ps: 초기에는 번거로운 디자인이지만, 이후 기능 확장에는 매우 편리합니다