>  기사  >  백엔드 개발  >  javascript - API 인터페이스 게이트웨이를 디자인하는 방법은 무엇입니까?

javascript - API 인터페이스 게이트웨이를 디자인하는 방법은 무엇입니까?

WBOY
WBOY원래의
2016-12-01 01:27:331420검색

현재 페이지는 프런트 엔드에 여러 인터페이스를 제공하지만 각 인터페이스를 병합하는 것은 불가능합니다.
프런트 엔드는 하나의 요청으로 여러 인터페이스에서 데이터를 얻으려고 합니다. 게이트웨이를 설계하는 데 사용됩니다.
이 기능은 각 인터페이스의 데이터를 한 번에 배열로 모아서
현재입니다. 아이디어는 중간에 노드 레이어를 추가하는 것입니다.
조언이 있으신가요? 감사합니다

ps: 인터페이스가 중복되어 병합되고 변경 사항이 엄청나고~ 확장에 도움이 되지 않으므로 현재 이 방법은 폐기됩니다

답글 내용:

현재 페이지는 프런트 엔드에 여러 인터페이스를 제공하지만 각 인터페이스를 병합하는 것은 불가능합니다.
프런트 엔드는 하나의 요청으로 여러 인터페이스에서 데이터를 얻으려고 합니다. 게이트웨이를 설계하는 데 사용됩니다.
이 기능은 각 인터페이스의 데이터를 한 번에 배열로 모아서
현재입니다. 아이디어는 중간에 노드 레이어를 추가하는 것입니다.
조언이 있으신가요? 감사합니다

ps: 인터페이스가 중복되어 병합되고 변경 사항이 엄청나고~ 확장에 도움이 되지 않으므로 현재 이 방법은 폐기됩니다

인터페이스 데이터를 병합할 때 데이터 병합 후 数据量 문제를 고려해야 합니다.
이러한 상황을 고려할 필요가 없다면 백엔드에서 추가 인터페이스를 직접 열고 프런트엔드에서 원하는 모든 데이터를 직접 반환할 수 있습니다. 이렇게 하면 중간에 추가 노드 레이어를 추가할 필요가 없습니다

jQuery의 ajax 수정 등 프론트엔드 ajax 수정이 가능합니다

우리가 달성하고자 하는 것은 프런트 엔드의 자동 병합입니다.

<code>#1. 每当发起一个ajax请求时, 会暂存队列等待, 比如20ms
#2. 期间如果又发起了一个ajax请求, 该请求也会被放入队列, 等待下一个ajax()调用, 而20ms内没有ajax()调用, 则会拼接队列中的请求数据, 向服务端发起合并请求.
#3. 当然, 第一个ajax发起后, 会有个等待超时如80ms, 防止不停的等待, 第一个请求迟迟发不出
#4. GET和POST的队列分开
#5. 合并的请求数据结构, 如:
$.ajax({
    url: "http://mydomain.com/ajax_package",
    dataType:"text", // 数据类型为text, 需要分割解析, 把结果分配到指定请求回调
    data:{
        "actions":[ // 当然, 这个参数要json化, jQuery自动会urlencode
            {
                "callback": "pkg_callback_234244", // 创建回调handle
                "url": "ajax1_url",   // 请求1的url
                "data": "ajax1_data"  // 请求1的data
            },
            {
                "callback": "pkg_callback_424234", // 创建回调handle
                "url": "ajax2_url",   // 请求2的url
                "data": "ajax2_data"  // 请求2的data
            } // 更多合并的请求数据
        ]
    },
    success:function(res){
        dispatch(res); // 对响应内容进行数据提取并回调
    }
});</code>

다음과 같이 백그라운드 패키징 인터페이스에서 반환된 데이터 사양을 설정합니다.

<code>>>>pkg_callback_234244
{"status":0, "error":null, "data":[1,2,3,4]}
<<<
>>>pkg_callback_424234
{"status":0, "error":null, "data":{"logined":true}}
<<<</code>

즉, 여기에서 각 패키지의 구조는 다음과 같이 정의됩니다.>>>{callback}n{data}n<<<
콜백은 대기열을 처리할 때 jQuery 객체에 추가됩니다. , 등

<code>jQuery.pkg_callback_424234 = {
    success: fucntion(data){}, // 等于或封装了原ajax请求的success方法回调
    error: function(err){}
}</code>

데이터 추출, 콜백 후 실행

<code>jQuery.pkg_callback_424234.success.call(xhr, JSON.parse(data) );
// 移除回调
delete jQuery['pkg_callback_424234'];</code>

인터페이스를 병합하고 모든 데이터를 한 번에 제공하시겠습니까? ?

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.