Тест интерфейса Python urllib.parse.urlencode
Тест интерфейса Python urllib.parse.urlencode

Введение

Сегодня мы будем использовать общий тип данных запроса при тестировании интерфейса в форме ключ=значение и запрашивать его в кодировке urlencode. Некоторые люди, возможно, никогда с этим не сталкивались, потому что, если интерфейс не определен и не разобран таким образом, в этом нет необходимости.

Однако некоторые запросы интерфейса необходимо преобразовать таким образом, прежде чем запрос можно будет выполнить.

фон

Позвольте мне в качестве примера взять интерфейс моего реального рабочего проекта, как показано на рисунке:

Видно, что данные тела этого интерфейса имеют форму ключ=значение и имеют urlencoded. Тип данных тела — байты, а не str.

Практическая работа

  статья передо мнойhttps://cloud.tencent.com/developer/article/2213005Упоминается вrequestsбиблиотекаpostВыбор параметров запроса метода,Подробно описывается, использует ли ключ=значение данные. но,При этом не учтено, что некоторые специальные интерфейсы необходимо перекодировать.,Только что встретились здесь,Давайте поговорим об этом один раз.

Здесь нам нужно использовать библиотеку urllib в python3. Теперь, когда python2 перестал обновляться, вот краткий обзор взаимосвязи между urllib, urllib2, urllib3 и запросами и python.

  python2.X Доступны следующие имена библиотек: urlliburllib2, urllib3, httplib, httplib2, requests。

  python3.X Доступны следующие имена библиотек: urllib, urllib3, httplib2, requests。

  Просто помните, что у python3 есть urllib, оба из которых являются urllib3 и Requests. Это не стандартные библиотеки. urllib3 Обеспечивает потокобезопасный пул соединений и поддержку отправки файлов и имеет мало общего с urllib и urllib2. requests Называет себя HTTP for Humans, Проще и удобнее в использовании.

python2

python3

import urllib2、import urllib、urllib2.Request

import urllib.request,urllib.error,urllib.parse、urllib.request

import urlparse

import urllib.parse

import urlopen

import urllib.request.urlopen

import urlencode

import urllib.parse.urlencode

import urllib.quote

import urllib.request.quote

cookielib.CookieJar

http.CookieJar

Давайте проанализируем http на картинке выше,Нам нужно перекодировать,Просто используй этоurllibвurlencodeметод кодирования словаря,Используется для отправки данных вurlЖдите операций。

  Python3середина Существует такжеurllibиurllib3Две библиотеки,ЧтосерединаurllibпочтиPython2серединаurllibиurllib2двамодульколлекция,Итак, наш наиболее часто используемыйurllibмодуль,иurllib3как расширениемодульиспользовать。

Метод заключается в следующем:

Язык кода:javascript
копировать
urllib.parse.urlencode(values)

Вышеупомянутые красные поля — это три наиболее важных пункта. После этого вы можете нормально вызывать этот интерфейс. Наконец, получите бизнес-данные.

Подвести итог

Вышеупомянутый метод обработки сообщений, в котором данные тела представляют собой словарь, а словарь содержит не только строки, но и значения, которые являются данными XML, которые необходимо перекодировать и содержат много бизнес-данных. Кроме того, если вам нужно изучить технологию разработки тестов или вы интересуетесь автоматизацией тестирования и любите пообщаться, вы можете присоединиться к группе для общения.

P.S.

Язык кода:javascript
копировать
url="http://127.0.0.1/api/test"
headers = {'Content-Type':'application/json'}
auth_data = {
"jsonrpc":"2.0",
"method":"user.login",
"id":0
}


urllib.parse.urlencode() Строки не могут быть закодированы, можно закодировать только типы dict.
urllib.parse.urlencode() #ВоляdictПараметры типа преобразуются вquery_stringФормат(key=value&key=value),И перекодировать китайский,В конечном итоге он будет преобразован в тип байтов (поток байтов).,следующее:
query_string = urllib.parse.urlencode(auth_data).encode('utf8')
query_string — это тип байтов,Форматнравиться:b'jsonrpc=2.0&method=user.login&id=0'


#Если сервер требует передачи данных в формате json, сначала используйте json.dumps() Сначала преобразуйте параметр dict в str, а затем используйте bytes(), чтобы преобразовать его в тип байтов (поток байтов), как показано ниже:
#json.loads() transform str to dict;json.dumps() transform dict to str
query_string = bytes(json.dumps(auth_data),'utf8')
query_string имеет тип байтов и имеет такой формат: b'{"jsonrpc": "2.0", "method": "user.login"}


#urllib.request.Request() требует, чтобы передаваемые данные имели тип байтов (поток байтов).
request = urllib.request.Request(url,query_string,headers=headers)
reponse = urllib.request.urlopen(request).read()
content = json.loads(reponse.decode('utf8'))
print(content)
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose