国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

RPC下Request請求參數(shù)轉(zhuǎn)換

深藍(lán)

我在使用 RPC遠(yuǎn)程調(diào)用 插件,遠(yuǎn)程獲取信息。
當(dāng)我從其他服務(wù)器請求rpc到達(dá)后,我獲取到的參數(shù)是一個數(shù)組,如下代碼。
我現(xiàn)在需要將這個$args轉(zhuǎn)換成Request類型才能請求getProject,我需要如何轉(zhuǎn)換一下,或者其他方法才能請求?

namespace service;
class User
{
    public function get($args)
    {
        // 我需要將這個$args轉(zhuǎn)換成Request類型才能請求getProject,我需要如何轉(zhuǎn)換一下,或者其他方法才能請求?
        $result = (new ProjectController)->getProject($args ???);
        return response_rpc_json(0, '獲取成功', $args);
    }
}

這是我已經(jīng)寫好一個api接口,可以正常運行,但同時我希望RPC接口也能直接調(diào)用,不要改動這個方法。

class ProjectController
{
    /**
     * 提供搜索選項
     * @param Request $request
     * @return Response
     * @throws BadRequestHttpException
     */
    public function getProject(Request $request): Response
    {
        return show('Success');
    }

}
824 1 1
1個回答

深藍(lán)

可以改動getProject的$request類型,解決問題,但是這樣會為后面埋下很多坑。有沒有大佬能指點一二。

  • tanhongbin 2024-07-29

    把業(yè)務(wù)放在service 層 接口 和 rpc 只處理接受參數(shù) 和 返回 等信息,這樣就共用的 現(xiàn)在只能這么做 rpc 和 框架的Request 兩碼事

  • 深藍(lán) 2024-07-29

    我模擬了一個Request請求,然后傳遞過去,勉強可以解決問題。

    private function generateRequest($data, $uri): Request
        {
            $this->checkSecretKey($data);
            $headers = [
                'Host' => '127.0.0.1:8080',
                'Content-Type' => 'application/x-www-form-urlencoded',
            ];
            // 構(gòu)建請求頭
            $headerBuffer = '';
            foreach ($headers as $key => $value) {
                $headerBuffer .= "$key: $value\r\n";
            }
    
            // 構(gòu)建請求體
            $bodyString = http_build_query($data);
    
            // 構(gòu)建完整的請求緩沖區(qū)
            $buffer = "POST $uri HTTP/1.1\r\n" .
                $headerBuffer . "\r\n" .
                $bodyString;
    
            // 創(chuàng)建 Request 對象
            return new Request($buffer);
        }
  • tanhongbin 2024-07-29

    你這種 可以看一下 webman底層源碼 他是怎么寫的 你就怎么寫 不過不建議 rpc就是簡單服務(wù)器端 高性能互相通信的,他不是處理表單的

  • 深藍(lán) 2024-07-29

    因為我的接口已經(jīng)寫好了,我想直接使用原來的api,如果重新適配一個service層的話,工程太大了。業(yè)務(wù),能跑起來就行,其他的暫時不重要。

年代過于久遠(yuǎn),無法發(fā)表回答
??