Apento Magento 2 Api '% fieldName là trường bắt buộc'?


8

Tôi không nhận được kết quả (id) trong khi sử dụng phương thức POST bằng url là rest / V1 / hello / test / 3

Ảnh chụp màn hình :nhập mô tả hình ảnh ở đây

Tôi đã theo liên kết này để tham khảo Xin vui lòng bấm vào đây

1) webapi.xml

<?xml version="1.0"?>
    <routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Webapi:etc/webapi.xsd">
        <route url="/V1/hello/name/:name" method="GET">
            <service class="Inchoo\Hello\Api\HelloInterface" method="name"/>
            <resources>
                <resource ref="anonymous"/>
            </resources>
        </route>
        <route url="/V1/hello/test/:test" method="POST">
            <service class="Inchoo\Hello\Api\TestInterface" method="test"/>
            <resources>
                <resource ref="anonymous"/>
            </resources>
        </route>
    </routes>

2) TestInterface.php

<?php
namespace Inchoo\Hello\Api;

interface TestInterface
{
    /**
     * Returns greeting message to user
     *
     * @api
     * @param id $name Users id.
     * @return id Greeting message with users id.
     */
    public function test($id);
}

3) Test.php

<?php
namespace Inchoo\Hello\Model;
use Inchoo\Hello\Api\TestInterface;

class Test implements TestInterface
{
    /**
     * Returns greeting message to user
     *
     * @api
     * @param string $name Users name.
     * @return string Greeting message with users name.
     */
    public function test($id) {
        return "Hello How are you your id is:," .$id;
    }
}

4)

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Inchoo\Hello\Api\HelloInterface" type="Inchoo\Hello\Model\Hello" />
    <preference for="Inchoo\Hello\Api\TestInterface" type="Inchoo\Hello\Model\Test" />
</config>

Bây giờ tôi đã xóa bộ nhớ cache và pagecache và mở ứng dụng postmen và giữ url như http://10.0.0.33/nagarajuM2/rest/V1/hello/test/3

nhưng tôi đang nhận được lỗi.

Hãy giúp tôi ra.


Bạn đang gửi yêu cầu POST và trong đó dữ liệu bạn đang gửi là gì?
Công nghệ Emipro Pvt. Ltd.

Trên thực tế tôi muốn in giá trị id bằng phương thức post do đó tôi đã sử dụng cùng một khái niệm mà inchoo đã làm theo. và trong url tôi đang sử dụng như rest / V1 / hello / name / 4
Nagaraju K

1
Để in trước tiên, bạn phải gửi dữ liệu POST như json: {"id": {}}
Emipro Technologies Pvt. Ltd.

ok để tôi thử ..
Nagaraju K

Cảm ơn công nghệ @Emipro bây giờ tôi đã có kết quả. cảm ơn vì đã giúp đỡ prntscr.com/g0d53x
Nagaraju K

Câu trả lời:


6

Bạn đang gửi Yêu cầu POST để bạn cũng phải gửi dữ liệu ở yêu cầu POST ở định dạng json như:{ "id": {}}

Và phải đặt Content-Type:application/jsontrong tiêu đề http.


Cũng như chúng ta phải đề cập đến Loại Nội dung của chủng
Nagaraju K

6

Cập nhật các bình luận chức năng chính xác cho cả tệp Giao diện và lớp thực hiện nó.

interface TestInterface
{
    /**
     * Returns greeting message to user
     *
     * @param int $name
     * @return mixed
     */
    public function test($id);
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.