Dokumen ini menjelaskan struktur permintaan, parameter umum, respons, dan metode penandatanganan untuk panggilan API HTTP ke Simple Message Queue (SMQ, formerly MNS).
Request structure
Endpoint
Simple Message Queue (SMQ, formerly MNS) tersedia di beberapa wilayah. Setiap wilayah menyediakan titik akhir publik dan internal. Untuk informasi selengkapnya, lihat Wilayah dan titik akhir.
Request method
Anda dapat mengirim permintaan ke Simple Message Queue (SMQ, formerly MNS) melalui HTTP dengan menggunakan metode seperti PUT, POST, GET, dan DELETE.
Permintaan harus mencakup parameter, header, dan badan yang sesuai. Baik permintaan maupun respons dikodekan dalam UTF-8.
Common parameters
Common request headers
Parameter | Wajib | Deskripsi |
Authorization | Ya | String autentikasi. Untuk informasi selengkapnya, lihat Metode penandatanganan permintaan. |
Content-Length | Ya | Panjang badan permintaan HTTP. |
Content-Type | Ya | Tipe MIME dari konten permintaan. Saat ini, hanya format teks dan XML yang didukung. |
Content-MD5 | Tidak | Hash MD5 dari badan permintaan HTTP. Untuk informasi selengkapnya, lihat The Content-MD5 Header Field. Catatan Header |
Date | Ya | Waktu saat permintaan dibuat. Waktu harus dalam format GMT. Jika selisih waktu antara permintaan dan waktu server SMQ melebihi 15 menit, permintaan dianggap tidak valid. |
Host | Wajib untuk HTTP/1.1. Opsional untuk HTTP/1.0. | Titik akhir permintaan. Formatnya adalah |
x-mns-version | Ya | Versi API SMQ yang digunakan. Versi saat ini adalah |
x-mns-date | Tidak | Alternatif untuk header |
Common response headers
Parameter | Deskripsi |
Content-Length | Panjang badan respons HTTP. |
Connection | Status koneksi HTTP. |
Date | Waktu respons dihasilkan, dalam format GMT. |
Server | Nama server SMQ yang menangani permintaan. |
x-mns-request-id | ID unik untuk permintaan tersebut. |
x-mns-version | Versi API SMQ. Versi saat ini adalah |
Response
Panggilan API mengembalikan data dalam format standar. Kode status HTTP dalam rentang 2xx menunjukkan keberhasilan panggilan, sedangkan kode status dalam rentang 4xx atau 5xx menunjukkan kegagalan. Respons yang berhasil berada dalam format XML.
Respons XML mencakup informasi keberhasilan dan data bisnis spesifik. Contoh berikut menunjukkan struktur dasarnya:
<?xml version="1.0" encoding="utf-8"?>
<!--Root node of the result-->
<RootNode xmlns="http://mns.aliyuncs.com/doc/v1/">
<!--Returned child node-->
</RootNode>Jika panggilan API gagal, tidak ada data hasil yang dikembalikan. Sebagai gantinya, layanan mengembalikan kode status HTTP 4xx atau 5xx. Badan respons berisi kode kesalahan dan pesan spesifik, serta mencakup ID permintaan unik secara global (RequestId) dan ID host (HostId) dari server yang menangani permintaan Anda.
Untuk informasi kesalahan lebih rinci, lihat Kode kesalahan.
Request signature method
Overview
Layanan Simple Message Queue (SMQ, formerly MNS) mengotentikasi setiap permintaan. Setiap permintaan yang Anda kirim ke SMQ harus menyertakan tanda tangan di headernya. SDK SMQ secara otomatis menangani proses penandatanganan. Kami menyarankan Anda menggunakan SDK untuk mengirim permintaan guna menghindari penandatanganan manual.
Proses penandatanganan terdiri dari langkah-langkah berikut:
Step 1: Construct the string-to-sign
Gunakan pseudokode berikut untuk menyusun string-to-sign:
StringToSign = HttpMethod + "\n"
+ CONTENT-MD5 + "\n"
+ CONTENT-TYPE + "\n"
+ DATE + "\n"
+ CanonicalizedMNSHeaders
+ CanonicalizedResource;Parameter | Deskripsi |
HttpMethod | Metode permintaan HTTP dalam huruf kapital. Contoh: |
Content-Md5 | Hash MD5 dari badan permintaan. Ini bersifat opsional. Jika header |
CONTENT-TYPE | Tipe konten dari badan permintaan. Jika header |
DATE | Tanggal dan waktu permintaan.
|
CanonicalizedMNSHeaders | Konkatenasi semua header HTTP yang diawali dengan awalan
|
CanonicalizedResource | URI dari resource yang diminta HTTP adalah bagian dari alamat titik akhir HTTP yang ditentukan dalam konfigurasi langganan, tidak termasuk nama domain dan port. Misalnya, jika alamat titik akhir yang dikonfigurasi adalah Penting Jika sistem Anda mencakup gerbang atau proxy lain, URI pada titik verifikasi mungkin berbeda dari yang ada dalam konfigurasi langganan Anda. Dalam kasus ini, Anda harus menggunakan URI dari konfigurasi langganan. |
Step 2: Calculate the signature
Signature = Base64( HMAC-SHA1( ${AccessSecret}, UTF-8-Encoding-Of(${StringToSign})) ) Parameter tersebut dijelaskan sebagai berikut:
Parameter | Deskripsi |
Base64 | Metode encoding Base64. |
HMAC-SHA1 | Algoritma penandatanganan. SMQ menggunakan metode |
AccessKey secret | Rahasia AccessKey Anda. Ini sesuai dengan ID AccessKey yang digunakan dalam tanda tangan. |
UTF-8-Encoding-Of | Format encoding UTF-8. |
StringToSign | String-to-sign yang disusun dalam Langkah 1: Susun string-to-sign. |
Step 3: Add the signature to the request
addHeader("Authorization","MNS " + ${AccessKeyId}+ ":" + ${Signature})Kuncinya adalah string konstan Authorization. Nilainya adalah string yang disusun dengan menggabungkan variabel AccessKeyId dan Signature dalam format MNS ${accessKeyId}:${Signature}. Dalam format ini, Signature adalah tanda tangan khusus yang dibuat oleh Simple Message Queue (SMQ, formerly MNS), yaitu nilai yang dihasilkan dalam Langkah 2: Hitung tanda tangan (Signature).
Signature examples
Berikut ini adalah contoh permintaan:
PUT /queues/$queueName?metaOverride=true HTTP/1.1
Host: $AccountId.mns.cn-hangzhou.aliyuncs.com
Date: Wed, 08 Mar 2012 12:00:00 GMT
Authorization: MNS 15B4D3461F177624****:xQE0diMbL****f3YB+FIEXAMPLE=
<?xml version="1.0" encoding="UTF-8" ?>
<Queue xmlns="http://mns.aliyuncs.com/doc/v1/">
<VisibilityTimeout >60</VisibilityTimeout>
<MaximumMessageSize>1024</MaximumMessageSize>
<MessageRetentionPeriod>120</MessageRetentionPeriod>
<DelaySeconds>30</DelaySeconds>
</Queue> Berikut ini adalah contoh respons:
Contoh 1
Layanan mengembalikan kesalahan 403 Forbidden jika ID AccessKey yang diberikan tidak ada atau tidak aktif.
Content-Type: text/xml
Content-Length: 314
Date: Wed, 18Mar 2012 08:04:06 GMT
x-mns-request-id: 512B2A634403E52B1956****
<?xml version="1.0" encoding="utf-8"?>
<Error xmlns="http://mns.aliyuncs.com/doc/v1/">
<Code>AccessIDAuthError</Code>
<Message>
AccessID authentication fail, please check your AccessID and retry.
</Message>
<RequestId>512B2A634403E52B1956****</RequestId>
<HostId>mns.cn-hangzhou.aliyuncs.com</HostId>
</Error> Contoh 2
Layanan mengembalikan kesalahan 403 Forbidden jika header Date tidak ada atau memiliki format yang tidak valid.
Content-Type: text/xml
Content-Length: 274
Date: Wed, 18Mar 2012 08:04:06 GMT
x-mns-request-id: 512B2A634403E52B1956****
<?xml version="1.0" encoding="UTF-8"?>
<Error xmlns="http://mns.aliyuncs.com/doc/v1/">
<Code>InvalidArgument</Code>
<Message>Date Header is invalid or missing.</Message>
<RequestId>7E1A5CF258F535884403****</RequestId>
<HostId>mns.cn-hangzhou.aliyuncs.com</HostId>
</Error> Contoh 3
Permintaan harus tiba di server Simple Message Queue (SMQ, formerly MNS) dalam waktu 15 menit sejak stempel waktunya. Jika tidak, layanan mengembalikan kesalahan 408 Request Timeout.
Content-Type: text/xml
Content-Length: 283
Date: Wed, 11 May 2011 09:01:51 GMT
x-mns-request-id: 512B2A634403E52B1956****
<?xml version="1.0" encoding="UTF-8"?>
<Error xmlns="http://mns.aliyuncs.com/doc/v1/">
<Code>TimeExpired</Code>
<Message>
The http request you sent is expired.
</Message>
<RequestId>512B2A634403E52B1956****</RequestId>
<HostId>mns.cn-hangzhou.aliyuncs.com</HostId>
</Error>