.nh .TH "Buf" "1" "2026-07-17" "Auto generated by spf13/cobra" "" .SH "نام (NAME)" buf-curl \- فراخوانی نقاط پایانی RPC با پروتکل‌های HTTP/gRPC توسط buf .SH "خلاصه دستور (SYNOPSIS)" \fBbuf curl [flags]\fP .SH "توضیحات (DESCRIPTION)" این دستور به شما در فراخوانی نقاط پایانی RPC مبتنی بر HTTP در سروری که از gRPC یا Connect استفاده می‌کند، کمک می‌کند. .PP به طور پیش‌فرض، از بازتاب سرور (server reflection) استفاده می‌شود، مگر اینکه گزینه .B \-\-reflect بر روی false تنظیم شده باشد. بدون بازتاب سرور، باید گزینه .B \-\-schema ارائه شود تا طرح‌واره (schema) پروتوباف (Protobuf) مربوط به متد در حال فراخوانی را مشخص کند. .PP تنها آرگومان موضعی، نشانی اینترنتی (URL) متد RPC برای فراخوانی است. نام متد مورد نظر برای فراخوانی از دو بخش پایانی مسیر URL حاصل می‌شود که باید به ترتیب شامل نام کاملاً مشخص سرویس (fully-qualified service name) و نام متد باشد. .PP نشانی اینترنتی (URL) می‌تواند از طرح (scheme) .B http یا .B https استفاده کند. در صورت استفاده از .BR http ، پروتکل HTTP 1.1 استفاده خواهد شد مگر اینکه گزینه .B \-\-http2\-prior\-knowledge تنظیم شده باشد. اگر از .B https استفاده شود، HTTP/2 در طول مذاکره پروتکل در اولویت خواهد بود و از HTTP 1.1 تنها در صورتی استفاده می‌شود که سرور از HTTP/2 پشتیبانی نکند. .PP پروتکل پیش‌فرض RPC مورد استفاده Connect خواهد بود. برای استفاده از پروتکلی دیگر (gRPC یا gRPC-Web)، از گزینه .B \-\-protocol استفاده کنید. توجه داشته باشید که پروتکل gRPC نمی‌تواند با HTTP 1.1 استفاده شود. .PP درخواست ورودی از طریق گزینه .B \-d یا .B \-\-data مشخص می‌شود. در صورت عدم وجود آن، یک درخواست خالی ارسال می‌شود. اگر مقدار گزینه با علامت ات‌ساین (@) شروع شود، باقی‌مانده مقدار گزینه به عنوان نام فایلی تفسیر می‌شود که بدنه درخواست از آن خوانده خواهد شد. اگر نام فایل فقط یک خط تیره (-) باشد، بدنه درخواست از ورودی استاندارد (stdin) خوانده می‌شود. بدنه درخواست یک سند JSON است که شامل پیام درخواست قالب‌بندی‌شده به صورت JSON است. اگر متد RPC در حال فراخوانی از نوع جریان کلاینت (client-streaming) باشد، بدنه درخواست می‌تواند شامل چندین مقدار JSON باشد که پشت سر هم اضافه شده‌اند. چندین سند JSON معمولاً باید با فاصله‌های خالی (whitespace) از یکدیگر جدا شوند، هرچند این امر اکیداً الزامی نیست مگر اینکه نوع پیام درخواست دارای یک نمایش سفارشی JSON باشد که شیء (object) JSON نباشد. .PP متاداده درخواست (یعنی هدرها) با استفاده از گزینه‌های .B \-H یا .B \-\-header تعریف می‌شوند. مقدار گزینه در قالب "name: value" است. اما اگر با علامت ات‌ساین (@) شروع شود، باقی‌مانده مقدار به عنوان نام فایلی تفسیر می‌شود که هدرها از آن خوانده می‌شوند (هر هدر در یک خط جداگانه). اگر نام فایل تنها یک خط تیره (-) باشد، هدرها از ورودی استاندارد (stdin) خوانده خواهند شد. .PP اگر قرار باشد هم هدرها و هم بدنه درخواست از یک فایل خوانده شوند (یا هر دو از stdin خوانده شوند)، فایل ابتدا باید شامل هدرها، سپس یک خط خالی و پس از آن بدنه درخواست باشد. .PP مثال‌ها: .PP ارسال یک RPC یک‌طرفه (unary) به سرور متنی ساده gRPC (به اصطلاح "h2c")، که طرح‌واره سرویس در یک ماژول Buf در دایرکتوری فعلی قرار دارد، با استفاده از یک پیام درخواست خالی: .EX $ buf curl --schema . --protocol grpc --http2-prior-knowledge \\ http://localhost:20202/foo.bar.v1.FooService/DoSomething .EE .PP ارسال یک RPC به یک سرور Connect، که در آن طرح‌واره از رجیستری شمای Buf می‌آید، با استفاده از درخواستی که به عنوان یک آرگومان خط فرمان تعریف شده است: .EX $ buf curl --schema buf.build/connectrpc/eliza \\ --data '{"name": "Bob Loblaw"}' \\ https://demo.connectrpc.com/connectrpc.eliza.v1.ElizaService/Introduce .EE .PP ارسال یک RPC یک‌طرفه (unary) به سروری که از بازتاب پشتیبانی می‌کند، با خروجی پرجزئیات: .EX $ buf curl --data '{"sentence": "I am not feeling well."}' -v \\ https://demo.connectrpc.com/connectrpc.eliza.v1.ElizaService/Say .EE .PP ارسال یک RPC مبتنی بر جریان سمت کلاینت (client-streaming) به یک سرور gRPC-web که از بازتاب پشتیبانی می‌کند، که در آن هدرهای سفارشی و داده‌های درخواست هر دو در یک heredoc قرار دارند: .EX $ buf curl --data @- --header @- --protocol grpcweb \\ https://demo.connectrpc.com/connectrpc.eliza.v1.ElizaService/Converse \\ <