Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Наилучшие практики создания REST API

Блог компании Издательский дом «Питер»JavaScript*Программирование*Интерфейсы*Node.JS*
Перевод
Всем привет!

Предлагаемая вашему вниманию статья, несмотря на невинное название, спровоцировала на сайте Stackoverflow столь многословную дискуссию, что мы не смогли пройти мимо нее. Попытка объять необъятное — внятно рассказать о грамотном проектировании REST API — по-видимому, удалась автору во многом, но не вполне. В любом случае, надеемся потягаться с оригиналом в градусе обсуждения, а также на то, что пополним армию поклонников Express.

Приятного чтения!
Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Просмотры23K
Комментарии 54

Aiohttp + Dependency Injector — руководство по применению dependency injection

Python*Проектирование и рефакторинг*
Tutorial
Привет,

Я создатель Dependency Injector. Это dependency injection фреймворк для Python.

Продолжаю серию руководств по применению Dependency Injector для построения приложений.

В этом руководстве хочу показать как применять Dependency Injector для разработки aiohttp приложений.

Руководство состоит из таких частей:
Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Просмотры3.7K
Комментарии 0

Black [O]lives Matter: раса, криминал и огонь на поражение в США. Часть 1

Python*Data Mining*Открытые данные*

Действительно ли полицейские в США стреляют больше в чернокожих, чем в представителей других рас? Связано ли применение силы полицией с расой? Связана ли криминальность с расой? Какова вероятность быть застреленным полицейским в США, если ты белый и если ты чернокожий? Вооружимся открытыми данными, python, pandas и постараемся пролить чуть-чуть света, отставив в сторону пропаганду и политику.

Мне любопытно
Всего голосов 31: ↑20 и ↓11+9
Просмотры12K
Комментарии 45

Black [O]lives Matter: раса, криминал и огонь на поражение в США. Часть 2

Python*Data Mining*Открытые данные*

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

Поехали!
Всего голосов 108: ↑102 и ↓6+96
Просмотры29K
Комментарии 386

Black [O]lives Matter: раса, криминал и огонь на поражение в США. Часть 3

Python*Data Mining*Открытые данные*

Продолжаем наше исследование, посвященное ситуации в США со стрельбой полицейских и уровнем преступности среди представителей белой и черной (афроамериканской) рас. Напомню, что в первой части я рассказал о предпосылках исследования, его целях и принятых оговорках / допущениях; а во второй части была демонстрация анализа взаимосвязи между расовой принадлежностью, преступностью и гибелью от рук служб правопорядка. В этот раз посмотрим на географическое распределение анализируемых данных по штатам США.

Читать далее
Всего голосов 54: ↑47 и ↓7+40
Просмотры13K
Комментарии 206

Crime, Race and Lethal Force in the USA — Part 1

Open source*Python*Data Mining*
Перевод
image

Do the police in the US really shoot black people more often than white people? Is use of lethal force connected with race? How is crime related to race? What are the odds of getting shot by the police if you are white and if you are black? We're taking public data and python with pandas to shed some light on these questions, propaganda and politics set far aside.
Read more →
Всего голосов 7: ↑5 и ↓2+3
Просмотры1.9K
Комментарии 1

Crime, Race and Lethal Force in the USA — Part 3

Open source*Python*Data Mining*Big Data*
Перевод
image
This is the concluding part of my article devoted to a statistical analysis of police shootings and criminality among the white and the black population of the United States. In the first part, we talked about the research background, goals, assumptions, and source data; in the second part, we investigated the national use-of-force and crime data and tracked their connection with race.
Read more →
Всего голосов 3: ↑3 и ↓0+3
Просмотры1.2K
Комментарии 0

Архитектурные подходы к авторизации в серверных приложениях: Activity-Based Access Control Framework

Информационная безопасность*Программирование*Java*GitHubСофт
Из песочницы

Сегодня поговорим об секьюрити в web (да, наверное, и не только) приложениях. Прежде чем описывать подходы и фреймворки расскажу небольшую предысторию.


Предыстория


За много лет работы в IT приходилось сталкиваться с проектами в самых разных сферах. У каждого проекта были свои требования к безопасности. Если в части аутентификации все было более-менее одинаково с точки зрения требований, то способы реализации механизма авторизации получались довольно разными от проекта к проекту. Каждый раз авторизацию приходилось писать практически с нуля под конкретные цели проекта, разрабатывать архитектурное решение, потом дорабатывать с изменением требований, тестировать, и т.д. — все это обычный процесс, которого не избежать в разработке. С каждой реализацией очередного такого архитектурного подхода все больше складывалось ощущение, что можно придумать какой-то общий подход, который будет покрывать основные цели авторизации и который можно будет использовать повторно в других приложениях. В данной статье будет рассмотрен обобщенный архитектурный подход к авторизации на примере разработанного фреймворка.


Подходы к созданию фреймворка


Как обычно, прежде чем разрабатывать что-то новое нужно определиться с тем, какие проблемы будут решаться, чем фреймворк будет удобен и полезен и, возможно, уже есть готовое решение (об этом поговорим после).


Всем известны два стиля написания кода — императивный и декларативный. Императивный стиль описывает то, как получить результат, декларативный — что требуется получить в результате.

Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Просмотры1.7K
Комментарии 1

Вредные советы для «идеального» REST API

SQL*API*
Из песочницы

Всем привет!


Почему 'идеального' написано в кавычках?!

То, что написано ниже относится к разряду "так делать не надо", однако, если вы считаете иначе — интересно будет услышать ваше мнение на этот счёт )


Наверное, многие из нас делали REST API, либо пользовались чьим-то готовым. Разберём в статье "невероятные" трюки, которые помогут сделать ваше API на голову выше, чем у других.

Читать дальше →
Всего голосов 23: ↑12 и ↓11+1
Просмотры5K
Комментарии 19

Architectural approaches to authorization in server applications: Activity-Based Access Control Framework

Информационная безопасность*Программирование*Java*GitHubСофт
Перевод

This article is about security. I’ll focus on this in the context of web applications, but I’ll also touch on other types of applications. Before I describe approaches and frameworks, I want to tell you a story.


Background


Throughout my years working in the IT sphere, I’ve had the opportunity to work on projects in a variety of fields. Even though the process of authenticating requirements remained relatively consistent, methods of implementing the authorization mechanism tended to be quite different from project to project. Authorization had to be written practically from scratch for the specific goals of each project; we had to develop an architectural solution, then modify it with changing requirements, test it, etc. All this was considered a common process that developers could not avoid. Every time someone implemented a new architectural approach, we felt more and more that we should come up with a general approach that would cover the main authorization tasks and (most importantly) could be reused on other applications. This article takes a look at a generalized architectural approach to authorization based on an example of a developed framework.


Approaches to Creating a Framework


As usual, before developing something new, we need to decide what problems we’re trying to solve, how the framework will help us solve them, and whether or not there is already a solution to these issues. I’ll walk you through each step, starting with identifying issues and describing our desired solution.


We’re focusing on two styles of coding: imperative and declarative. Imperative style is about how to get a result; declarative is about what you want to get as a result.

Read more →
Рейтинг0
Просмотры495
Комментарии 0

Документирование API в Java приложении с помощью Swagger и OpenAPI 3.0

Java*

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


Создание документации вручную — утомительный процесс. Swagger поможет вам упростить эту работу.

Читать дальше →
Всего голосов 22: ↑18 и ↓4+14
Просмотры15K
Комментарии 22

Код на React и TypeScript, который работает быстро. Доклад Яндекса

Блог компании ЯндексИнтерфейсы*ReactJS*TypeScript*
Евангелисты Svelte и других библиотек любят показывать примеры тормозящих компонентов на React. React и TypeScript дают много возможностей создавать медленный код. После доклада Виктора victor-homyakov вы сможете писать более производительные компоненты без усложнения кода.

— Здравствуйте, меня зовут Виктор, я один из разработчиков страницы поиска Яндекса. На ней каждый день сотни миллионов пользователей вводят свои запросы, получают страницу со ссылками или сразу с правильными ответами. Из-за такого количества запросов нам очень важно, чтобы наш код работал оптимально. И, конечно, я сразу должен затронуть тему преждевременной оптимизации кода.
Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Просмотры18K
Комментарии 31

Тривиальная и неправильная «облачная» компиляция

Программирование*Java*API*Хакатоны


Введение


Данная статья не история успеха, а скорее руководство «как не надо делать». Весной 2020 для поддержания спортивного тонуса участвовал в студенческом хакатоне (спойлер: заняли 2-е место). Удивительно, но задача из полуфинала оказалась более интересной и сложной чем финальная. Как вы поняли, о ней и своём решении расскажу под катом.

Под кат
Всего голосов 8: ↑6 и ↓2+4
Просмотры1.6K
Комментарии 9

Перспективы разработчика в автоматизации тестирования ПО

Блог компании Veeam SoftwareТестирование IT-систем*Программирование*Тестирование веб-сервисов*Карьера в IT-индустрии

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

Читать далее
Всего голосов 14: ↑11 и ↓3+8
Просмотры3.6K
Комментарии 17

Partial Update library. Частичное обновление сущности в Java Web Services

Java*API*
Из песочницы

В структуре веб-сервисов типичным базовым набором операций над экземплярами сущностей(объектами) является CRUD (Create, Read, Update и Delete). Этим операциям в REST соответствуют HTTP методы POST, GET, PUT и DELETE. Но зачастую у разработчика возникает необходимость частичного изменения объекта, соответствующего HTTP методу PATCH. Смысл его состоит в том, чтобы на стороне сервера изменить только те поля объекта, которые были переданы в запросе. Причины для этого могут быть различные:

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Просмотры1.4K
Комментарии 8

Использование Google Protocol Buffers (protobuf) в Java

Блог компании OTUSJava*
Перевод

Недавно вышло третье издание книги "Effective Java" («Java: эффективное программирование»), и мне было интересно, что появилось нового в этой классической книге по Java, так как предыдущее издание охватывало только Java 6. Очевидно, что появились совершенно новые разделы, связанные с Java 7, Java 8 и Java 9, такие как глава 7 "Lambdas and Streams" («Лямбда-выражения и потоки»), раздел 9 "Prefer try-with-resources to try-finally" (в русском издании «2.9. Предпочитайте try-с-ресурсами использованию try-finally») и раздел 55 "Return optionals judiciously" (в русском издании «8.7. Возвращайте Optional с осторожностью»). Но я был слегка удивлен, когда обнаружил новый раздел, не связанный с нововведениями в Java, а обусловленный изменениями в мире разработки программного обеспечения. Именно этот раздел 85 "Prefer alternatives to Java Serialization" (в русском издании «12.1 Предпочитайте альтернативы сериализации Java») и побудил меня написать данную статью об использовании Google Protocol Buffers в Java.

Читать далее
Всего голосов 7: ↑5 и ↓2+3
Просмотры5.6K
Комментарии 4

Структура React REST API приложения + TypeScript + Styled-Components

JavaScript*ReactJS*TypeScript*
Из песочницы

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

Звучит интересно
Всего голосов 9: ↑9 и ↓0+9
Просмотры4.1K
Комментарии 4

Поддержка Null в Protobuf

Блог компании OTUSПрограммирование*Java*
Перевод

Что значит значение равно null?

Проблема в том, что null может обозначать разные вещи в разных контекстах:

- Null — это null.

- Null — значение опционально / не установлено.

- Null — значение по умолчанию.

- Null — перепутано с другим значением.

Чтобы избежать этой путаницы, разработчики protobuf решили не сериализовать null. Вместо этого protobuf принуждает вас использовать одну из явных стратегий, избегая тем самым семантической путаницы в вашем Protobuf / gRPC API.

Читать далее
Всего голосов 15: ↑12 и ↓3+9
Просмотры3K
Комментарии 2

Миграция API с REST на gRPC в WePay

Блог компании OTUSПрограммирование*Java*Микросервисы*
Перевод

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

В этом посте мы переключим внимание на то, как наши микросервисы используют service mesh для взаимодействия друг с другом. В частности, какая полезная нагрузка используется для запросов и как мы мигрировали с одной на другую. Мы сравним наши текущие полезные нагрузки на основе Representational State Transfer (REST) с высокопроизводительным Remote Procedure Call (gRPC) и рассмотрим проблемы, с которыми мы столкнулись при внедрении, использовании и миграции на gRPC.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Просмотры4.2K
Комментарии 3

Построение RESTful web API на платформе InterSystems — 3: Разработка от спецификации

Блог компании InterSystemsAPI*

В этой статье я хотел бы рассказать о подходе от спецификации (spec-first) при разработке REST API на платформе InterSystems IRIS, который ускоряет разработку приложений в рамках микросервисной архитектуры и решение интеграционных задач. Эта статья является продолжением моей предыдущей статьи про разработку REST API на платформе InterSystems IRIS.

Читать дальше →
Всего голосов 1: ↑1 и ↓0+1
Просмотры524
Комментарии 0