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

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

深藍(lán)

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

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

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

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

}
689 1 1
1個(gè)回答

深藍(lán)

可以改動(dòng)getProject的$request類型,解決問(wèn)題,但是這樣會(huì)為后面埋下很多坑。有沒(méi)有大佬能指點(diǎn)一二。

  • tanhongbin 2024-07-29

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

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

    我模擬了一個(gè)Request請(qǐng)求,然后傳遞過(guò)去,勉強(qiáng)可以解決問(wèn)題。

    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)建請(qǐng)求頭
            $headerBuffer = '';
            foreach ($headers as $key => $value) {
                $headerBuffer .= "$key: $value\r\n";
            }
    
            // 構(gòu)建請(qǐng)求體
            $bodyString = http_build_query($data);
    
            // 構(gòu)建完整的請(qǐng)求緩沖區(qū)
            $buffer = "POST $uri HTTP/1.1\r\n" .
                $headerBuffer . "\r\n" .
                $bodyString;
    
            // 創(chuàng)建 Request 對(duì)象
            return new Request($buffer);
        }
  • tanhongbin 2024-07-29

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

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

    因?yàn)槲业慕涌谝呀?jīng)寫好了,我想直接使用原來(lái)的api,如果重新適配一個(gè)service層的話,工程太大了。業(yè)務(wù),能跑起來(lái)就行,其他的暫時(shí)不重要。

??