Во-первых, в вашем примере выше / books? author_id = 42 не успокаивает imo (некоторые религиозные дискуссии, несомненно, будут иметь место). / books / 42 будет «получить мне книгу с id = 42». Вместо этого API должен принимать параметры фильтра из тела запроса в качестве критериев выбора. / books будут включать ВСЕ книги, которые соответствуют встроенным критериям фильтрации, возможность нулевой коллекции.
Если вы хотите, API также может проверить, действительны ли некоторые критерии фильтрации (автора) и возвращать 404, если автор не существует. Это решение API, пользовательский интерфейс только знает, как с ним разговаривать и обрабатывать результат.
Обратите внимание, что именно я предсказал? Религиозная дискуссия вместе с обложками. Прочитайте работу Роя Филдинга и разработку Леонарда Ричардсона.
Очищать некоторую путаницу, trap
может использоваться. Это может предоставить список материала, выполняемого, когда определенный сигнал прибывает:
trap "echo hello" SIGINT
, но может также использоваться для выполнения чего-то, если оболочка выходит:
trap "killall background" EXIT
Это - встроенное, таким образом help trap
даст Вам информацию (работы с ударом). Если Вы только хотите уничтожить фоновые задания, можно сделать
trap 'kill $(jobs -p)' EXIT
, Предостерегаются, чтобы использовать единственный '
, препятствовать тому, чтобы оболочка заняла место $()
сразу.
Другая опция - он, чтобы установить сценарий сам как лидера группы процесса и захватить killpg на Вашей группе процесса на выходе.
Так напишите сценарий загрузки сценария. Работайте killall
(или независимо от того, что доступно на Вашей ОС), команда, которая выполняется, как только сценарий закончен.
Это работает на меня (улучшено благодаря комментариям):
trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT